選択データのみ縦変換

時系列項目がカラムとしてまとめられているのをよく見ます。

1

縦軸に識別子、横軸が時系列のサマリーとして表現されているので、
人間が読むには非常にわかりやすいのですが、コンピュータに制御させる場合は色々問題があります。

このデータをラインチャートでName別に表示しようとすると
横軸に(カラム名)縦軸に時間のパラメータをすべて入力し、
色の基準でNameにすると表現できます。
2

ただし、横軸の並びはアスキー順になるのでカスタムの並び替えにしなければならなかったり、そもそも文字列扱いされているので、時間として扱う事ができません。

データの縦変換

このような場合にデータを縦変換すると便利です。

以前データ変換でピボットの解除の方法をご紹介したのですが、
ピボットの解除は横データを縦型に変換するため、時間もかかりデータのボリュームも膨れ上がります。
今回のデータも横に18パラメータあるので、100行あった場合は1800行になります。

しかもピボットの解除はデータテーブルを一括変換する事しかできないので
元データが数万行あった場合は時間もリソースも無駄に消費します。

必要なデータだけ縦変換する方法として、TERRを使用する方法を紹介します。

TERRスクリプト

3

「ツール」→「データ関数を登録」を選択
名前は任意でOKですが、reshape2パッケージを使用しますので
パッケージの欄に”reshape2″と入力してください。

※reshape2は標準パッケージではないので初回使用時にはダウンロードして追加する必要があります。
こちらを参考にパッケージを追加してください。

スクリプトに下記スクリプトを記入してください。

outdata <- melt ( indata , id = c("Name" , na.rm=TRUE ) 

idの項目はキーとして保持するカラム名のリストを設定してください。

4

ここではindataを入力として縦変換(melt)したデータをoutdataとして受け取ります。
indataとoutdataの定義もしていきます。

パラメータの入力

入力パラメーターとしてindataを定義します。
「追加」から「入力パラメータ」indata
「タイプ」は「テーブル」
「使用可能なデータ型」は「すべて」を選択して下さい。
5

出力パラメータ

出力用にoutdataを定義します。
「追加」から「結果パラメータ」outdata
「タイプ」は「テーブル」を選択してください。
6

準備が完了したので実行してみます。

実行

右上にある実行ボタンを押してスクリプトを実行します。
7

実行時のパラメータとデータの割り当てを設定します。
入力パラメータは、マークした範囲のデータを変換したいので
indataは「カラム」で検索式’*’にしておきます。これでカラムが可変になった場合でも対応できます。
「制限の基準」で「マークされたロー」のチェックを忘れないでください。
今回のキモです。これを設定しないと全データが一度に渡されるので元も子もないです。
8

出力の設定です。
outdataをSpotfire側で扱う方法を選択します。
データテーブルで「新しいデータテーブルの作成」を選択します。
9
「OK」を押すと実行されます。

動作確認

元データ(一行)を選択するとoutdataには18行作成されることが分かります。
10

Bを選択するとoutdataが更新されます。
11

ちなみにvariableカラムが文字列型なのでminutesカラムを計算カラムとして追加しました。
式は下記のとおりです。

integer ( left ([variable]  , find ( "分" ,[variable]  ) -1 )  ) 

(勿論R言語側で処理してもいいのですが、忘れました。。。。)

このように複数行を選択した場合でも適時データが更新されます。
大量データを扱っていて、必要な箇所だけ縦変換する事ができました。
12
横軸を時間で取り、色別に回帰を取りました。

パッケージがない場合

reshape2は標準パッケージではないので初回使用時にはダウンロードして追加する必要があります。
こちらを参考にパッケージを追加してください。

パッケージがない場合、左下のステータス表示にエラーが表示されます。
1

2