4
我想使用reshape2軟件包將一些數據從long轉換爲wide,但是我收到了一個我無法解決的錯誤。在下面的例子中,我創建了一些與我的真實數據類似的假數據。我想將每個「主題」轉換爲包含該主題中所有「學分」總和的列,以獲得給定的「ID」編號。如何使用R中的reshape2包解決dcast錯誤?
library(reshape2)
#創建假數據並把它變成一個數據幀
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」的值作爲新的列
#和的總和「信用」的值,每個「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 = SUM」。
另外,如果我創建了值「信用」使用樣本()函數(而不是代表()),並調用dcast(不fun.aggregate = SUM),我收到以下錯誤:
Error in .subset2(x, i, exact = exact) :
no such index at level 1
我已經運行了什麼,據我所知,類似的dcast命令之前沒有問題。我猜我會打我的額頭,當我看到解決方案時大聲喊出「doh」,但我被卡住了。
你能看看http://stackoverflow.com/questions/18882475/r-how-to-get-something-like-adjacency-matrix - 但是在十字路口值的/ 18883106#18883106並建議我一些修改? – andi 2013-09-18 22:04:00