[英]How to resolve dcast error with reshape2 package in R?
我正在嘗試使用reshape2包將一些數據從long轉換為寬,但是我收到的錯誤是我無法解決的。 在下面的示例中,我創建了一些與我的真實數據類似的虛假數據。 我想將每個“subj”轉換為一個列,該列包含該主題中給定“ID”號碼的所有“信用”的總和。
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)
#從long轉換為wide,將“subj”的值作為新列
#和“credit”之和作為每個“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”,我會得到同樣的錯誤。
另外,如果我使用sample()函數(而不是rep())創建“credits”的值,並調用dcast(沒有fun.aggregate = sum),我會收到以下錯誤:
Error in .subset2(x, i, exact = exact) :
no such index at level 1
據我所知,我已經運行了類似的dcast命令,之前沒有問題。 當我看到解決方案的時候,我猜我要打我的額頭並喊“doh”,但我被卡住了。
只需將信用放在引號中:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.