2012-02-25 13 views
4

私はreshape2パッケージを使用して、長いデータから広いデータに変換しようとしていますが、解決できなかったエラーが発生しています。以下の例では、私の実際のデータに似た偽のデータを作成しました。私はそれぞれの "subj"を、与えられた "ID"番号に対するそのサブジェクトのすべての "クレジット"の合計を含む列に変換したいと思います。Rのreshape2パッケージのdcastエラーを解決するには?

library(reshape2) 

#は偽のデータを作成し、新しい列
#との和として「SUBJ」の値で、

ID = rep(c(100,101,102,103), each=5) 
subj = rep(c("CHEM","ENGL","HIST","MATH"), 5) 
credits = rep(3, 20) 
df = data.frame(ID, subj, credits) 

#ワイドに長いから変換したデータフレームにそれを回します

:各「SUBJ」の値が

df.wide = dcast(df, ID ~ subj, value.var=credits, fun.aggregate=sum) 

は、ここで私はdcastコマンドを実行したときに、私が取得しようとしているものだとして、「クレジット」

ID CHEM ENGL HIST MATH 
100  6  3  3  3 
101  3  6  3  3 
[and so on for each value of ID] 

ここで私は上記のコードを実行したときに、私は実際に取得エラーです:

Error in .subset2(x, i, exact = exact) : 
recursive indexing failed at level 2 

私はdcast呼び出しから「fun.aggregate =合計を」削除した場合、私は同じエラーを取得しますが。

私は(代わりに担当者の())のサンプル()関数を使用して、「クレジット」の値を作成し、(fun.aggregate =合計なし)dcastを呼び出す場合も、私は次のエラーを取得:

Error in .subset2(x, i, exact = exact) : 
no such index at level 1 

私はこれまで同様のdcastコマンドを問題なく実行することができました。私は私の額を叩き、解決策を見たら "ドゥ"と叫ぶつもりだと推測していますが、私は立ち往生しています。

答えて

6

ちょうど引用符でクレジットを入れて:

df.wide = dcast(df, ID ~ subj, value.var="credits", fun.aggregate=sum) 
df.wide 
    ID CHEM ENGL HIST MATH 
1 100 6 3 3 3 
2 101 3 6 3 3 
3 102 3 3 6 3 
4 103 3 3 3 6 
+0

あなたはhttp://stackoverflow.com/questions/18882475/r-how-to-get-something-like-adjacency-matrixを見てもらえ交差点の値は/ 18883106#18883106ですが、修正をお願いします。 – andi

関連する問題