2021/02/24
R連携
このコンテンツでは、選択したデータを縦変換する方法について説明していきます。
なお、本コンテンツで利用したSpotfireのバージョンは10.10/11.4です。ご利用環境によって、一部画面構成が異なる可能性がありますので、ご了承ください。
以下のように、時系列項目がカラムとしてまとめられているデータはよくあります。
人が読むにはわかりやすいですが、コンピュータに制御させる場合は色々問題があります。
例えばこのデータを折れ線グラフでName別に表示する場合、Spotfireでは以下の設定をする必要があります。
ただし、横軸の並びはアスキー順のためカスタムの並び替えが必要です。そもそも文字列として扱われるため時間として扱えません。このような場合、データを縦変換すると便利です。
別ページで紹介しているピボットの解除は、データテーブルを一括で縦変換するものです。
今回は、TERRを使用して必要なデータだけ縦変換する方法を紹介します。大量データを扱う場合、ピボットの解除よりも時間とリソースがかかりません。
メニュー内の「ツール」から「データ関数を登録」を選択します。
「データ関数の登録」ダイアログでは以下を入力してください。
※idの項目はキーとして保持するカラム名のリストを設定してください
※reshape2は標準パッケージではないので初回使用時にはダウンロードして追加する必要があります。こちらを参考にパッケージを追加してください。
indataを入力とし、縦変換(melt)したデータをoutdataとして受け取るというスクリプトができました。
入力パラメーターとしてindataを定義します。
「パラメータの入力」タブに移動し、「追加」をクリックします。
「入力パラメータ」ダイアログでは、以下を設定し「OK」をクリックします。
出力用にoutdataを定義します。
「出力パラメータ」タブに移動し、「追加」をクリックします。
「出力パラメータ」ダイアログでは、以下を設定し「OK」をクリックします。
「データ関数の登録」ダイアログに戻り、右上の「実行」ボタンをクリックします。
「パラメータの編集」ダイアログが開きます。
入力タブでは、実行時のパラメータとデータの割り当てを以下のように設定します。
これにより、カラムが可変になった場合でも対応でき、マークした範囲のデータを変換することができます。
出力タブでは、outdataをSpotfire側で扱う方法を以下のように設定します。
「OK」を押すと実行されます。
確認のため、indataの棒グラフとoutdataのテーブルを作成します。
元データであるindataで作成した棒グラフのAを選択すると、outdataにはAを縦変換した8行が作成されます。
棒グラフのBを選択するとoutdataが更新されます。
また、棒グラフの複数セグメントを選択した場合でも適時outdataが更新されます。
このように、必要な箇所だけ縦変換できると大量データを扱う際に便利です。
前の記事
16進数から10進数へ変換次の記事
パッケージインストール方法【R連携】最新の記事
library(reshape2)
outdata = melt(data=indata, id.var="Name", value.name="value")