2021/02/24

R連携

選択データのみ縦変換

このコンテンツでは、選択したデータを縦変換する方法について説明していきます。
なお、本コンテンツで利用したバージョンはSpotfire10.10です。ご利用環境によって、一部画面構成が異なる可能性がありますので、ご了承ください。

選択データのみ縦変換

以下のように、時系列項目がカラムとしてまとめられているデータはよくあります。
人が読むにはわかりやすいですが、コンピュータに制御させる場合は色々問題があります。

例えばこのデータを折れ線グラフでName別に表示する場合、Spotfireでは以下の設定をする必要があります。

  • 横軸:カラム名を選択
  • 縦軸:時間のパラメータをすべて入力
  • 色の基準:Nameに設定

ただし、横軸の並びはアスキー順のためカスタムの並び替えが必要です。そもそも文字列として扱われるため時間として扱えません。このような場合、データを縦変換すると便利です。

データの縦変換

別ページで紹介しているピボットの解除は、データテーブルを一括で縦変換するものです。

今回は、TERRを使用して必要なデータだけ縦変換する方法を紹介します。大量データを扱う場合、ピボットの解除よりも時間とリソースがかかりません。

TERRスクリプト

メニュー内の「ツール」から「データ関数を登録」を選択します。
「データ関数の登録」ダイアログでは以下を入力してください。

  • 名前:任意の名前
  • パッケージ:reshape2(この記事ではバージョン1.4.4を使用)
  • スクリプト:以下のコードを入力
library(reshape2)
outdata = melt(data=indata, id.var="Name", value.name="value")

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

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

indataを入力とし、縦変換(melt)したデータをoutdataとして受け取るというスクリプトができました。

パラメータの入力

入力パラメーターとしてindataを定義します。
「パラメータの入力」タブに移動し、「追加」をクリックします。

「入力パラメータ」ダイアログでは、以下を設定し「OK」をクリックします。

  • 入力パラメータ名:indata
  • タイプ:テーブル
  • 使用可能なデータ型:すべて

出力パラメータ

出力用にoutdataを定義します。
「出力パラメータ」タブに移動し、「追加」をクリックします。

「出力パラメータ」ダイアログでは、以下を設定し「OK」をクリックします。

  • 出力パラメータ名:outdata
  • タイプ:テーブル

縦変換の実行

「データ関数の登録」ダイアログに戻り、右上の「実行」ボタンをクリックします。

「パラメータの編集」ダイアログが開きます。
入力タブでは、実行時のパラメータとデータの割り当てを以下のように設定します。

  • 入力ハンドラ:「カラム」の「検索式」を選択し「*」を入力
  • 制限の基準:「マークされたロー」にチェック

これにより、カラムが可変になった場合でも対応でき、マークした範囲のデータを変換することができます。

出力タブでは、outdataをSpotfire側で扱う方法を以下のように設定します。

  • 出力ハンドラ:「データテーブル」の「新しいデータテーブルの作成」を選択

「OK」を押すと実行されます。

動作確認

確認のため、indataの棒グラフとoutdataのテーブルを作成します。

元データであるindataで作成した棒グラフのAを選択すると、outdataにはAを縦変換した8行が作成されます。

棒グラフのBを選択するとoutdataが更新されます。

また、棒グラフの複数セグメントを選択した場合でも適時outdataが更新されます。

このように、必要な箇所だけ縦変換できると大量データを扱う際に便利です。

【R連携】記事一覧に戻る
全記事一覧に戻る