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