我正在使用下面的data.table命令,该命令应该与ddply对应物执行类似的操作:
DT[,mean(var),by=group]
VS
ddply(DF,.(group), summarise, mean(var))
levels(group)
给出"1","2","3","4","5"
。
我的问题是为什么DT
返回一个没有排序的组列的表,即它返回:
Group V1
1- 2 0.0012030079
2- 3 0.0012680941
3- 4 -0.0003243492
4- 5 0.0008718012
5- 1 0.0009910559
而不是ddply命令的预期和实际输出:
Group ..1
1 1 0.0009910559
2 2 0.0012030079
3 3 0.0012680941
4 4 -0.0003243492
5 5 0.0008718012
我正在使用变通方法DT[,mean(var),by=group][order(group)]
来返回排序列表,但这非常痛苦。对此有任何帮助表示赞赏。谢谢!
PS。我从R控制台复制的表似乎没有在这里正确显示,我很抱歉。如何让它像桌子一样显示?
答案 0 :(得分:4)
正如by=
中?data.table
部分所述:
"保留每个组中行的顺序,顺序也是如此 这些团体。"
所以预期的结果正是你得到的。处理排序的另一种方法是使用:
DT[,mean(var),keyby=group]
再次根据?data.table
文档:
"通常的做法是在您希望时常规使用
keyby=
结果要排序。"