1

R を使用して API を介してデータを取り込み、そのすべてを 1 つのテーブルにマージしてから、CSV ファイルに書き込みます。ただし、Tableau で適切にグラフ化するには、Excel 用の再フォーマット ツールを使用してデータを準備し、クロス集計形式から各行に 1 つのデータのみが含まれる形式に変換する必要があります。たとえば、次の形式から何かを取得します。

ID,Gender,School,Math,English,Science
1,M,West,90,80,70
2,F,South,50,50,50

に:

ID,Gender,School,Subject,Score
1,M,West,Math,90
1,M,West,English,80
1,M,West,Science,70
2,F,South,Math,50
2,F,South,English,50
2,F,South,Science,50

R または R ライブラリに、これを可能にする、または出発点を提供する既存のツールはありますか? Tableau のデータ準備を自動化しようとしているので、1 つのスクリプトを実行して適切にフォーマットするだけでよく、可能であれば Excel の手動ステップを削除したいと考えています。

4

1 に答える 1

1

R およびその他のいくつかのプログラムでは、このプロセスは「データの再形成」と呼ばれます。実際、最初にリンクした Tableau ページは、「Excel Reshaper プラグイン」について語っています。

ベース R には、データを再形成する関数がいくつかあります。たとえば、reshape()パネル データを幅の広い形式から長い形式に変換しstack()、データのスキニー スタックを作成する (悪名高い) 関数です。

ただし、このようなデータ変換には「reshape2」パッケージの方がはるかに人気があるようです。data.frame「mydf」という名前で保存したサンプル データを「溶かす」例を次に示します。

library(reshape2)
melt(mydf, id.vars=c("ID", "Gender", "School"), 
     value.name="Score", variable.name="Subject")
#   ID Gender School Subject Score
# 1  1      M   West    Math    90
# 2  2      F  South    Math    50
# 3  1      M   West English    80
# 4  2      F  South English    50
# 5  1      M   West Science    70
# 6  2      F  South Science    50

この例では、ベース Rreshape()は適切ではありませんが、適切stack()です。ここではstack、最後の 3 つの列だけを編集しました。

stack(mydf[4:6])
#   values     ind
# 1     90    Math
# 2     50    Math
# 3     80 English
# 4     50 English
# 5     70 Science
# 6     50 Science

data.frame探しているを取得するにはcbind、上記の出力で最初の 3 つの列を取得します。


参考までに、Hadley Wickham のTidy Dataペーパーは、データの構造がどのように処理と視覚化を促進するかを考えるための良い出発点です。

于 2013-08-26T15:41:37.617 に答える