計算カラムを一気に追加したい
データの中に複数パラメータ分の測定値と基準値があり、
これらの差分を計算したい場合、計算カラムが便利です。
ただし、計算カラムは一度に1カラムしか追加できないため、
32カラム分集計したい場合は32回同じ作業をする必要があります。
このような場合はTERRを使用し、R言語で一気に処理をしてしまいましょう。
今回の例では縦が100行、横が64列のテーブルを作成し、
- 1カラム目から33カラム目を引いた結果
- 2カラム目から34カラム目を引いた結果
- 3カラム目から35カラム目を引いた結果
- 。。。
という作業で32カラム分の結果を作成します。
テストデータの作成
せっかくのR言語課題なので、テストデータもR言語で作成しましょう。
横64カラムで縦100行のデータテーブルを作成します。
データ関数の登録
「ツール」→「データ関数を登録」を選択し
「スクリプト」に下記スクリプトを記載して下さい。
a <- matrix ( rnorm ( 100 * 64) , 100 , 64 )
R言語に関しては詳しく説明しませんが、
rnormという関数で乱数を100×64個作成し、
それをmatrixという関数で縦100、横64のテーブルのようなものを作成してaに格納しています。
出力設定
「出力パラメータ」タブを選択し、
作成したa を「テーブル」として登録してSpotfire側で受け取れるようにします。
実行時の設定
「パラメータの編集」という画面がでます。
これはaというR言語が出力したデータをSpotfire側でどのように扱うか設定します。
テーブルとして使いますので、データテーブルを選択してください。
a.1~a.64という64個の列を持つaというテーブルができます。
これでテストデータができました。
計算カラムの作成
ここからが本番です。
それでは計算したカラムを追加してみましょう。
1カラム目から33カラムを引いて、2カラム目から34カラムを引いて、、、、
という一連の計算はR言語では非常にシンプルに記述できます。
データ関数の登録
今度は計算カラムを追加するためのスクリプトを追加します。
再度「ツール」→「データ関数を登録」を選択し
「スクリプト」に下記を記載して下さい。
ret <- a[1:32]-a[33:64]
内容としてはaのテーブルを最初の32個のテーブルと、33個以降のテーブルに分けて、それぞれ引き算しています。
これで32個分のカラムが一気に算出できます。
R言語のベクトル演算の得意とするところです。
入出力設定
今回は出力パラメータだけでなく、入力パラメータも設定する必要がありますので、
「パラメータの入力」タブで「追加」を押して、aを定義します。
また、「出力パラメータ」で計算したretを定義します。
複数カラムありますので「タイプ」はテーブルにします。
計算の実行
「実行」ボタンを押すと入力と出力のパラメータを設定する画面が表示されます。
実行時の設定
入力はaテーブルを渡しますので、カラムを選択して全カラムを指定して下さい。
出力は元のaテーブルに結果カラムとして追加したいので「カラム」を選択してください。
ちなみに別に結果テーブルとして保存したい場合は「データテーブル」を選択するとretというテーブルが新規作成されます。
結果としてa.1(2)などの新規カラムが32個追加されていると思います。
今回は簡単に引き算にしましたが、これ以外に様々な集計方法も設定できますし、
カラムの並びも測定値32個、基準値32個だけでなく、偶数奇数並びの場合もR言語を少し変更すれば対応できます。
スクリプトを記載する事でかなり柔軟なデータ変換が可能になります。