Data.table分组结果的顺序不正确

时间:2016-06-08 00:03:00

标签: r data.table

我正在使用下面的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控制台复制的表似乎没有在这里正确显示,我很抱歉。如何让它像桌子一样显示?

1 个答案:

答案 0 :(得分:4)

正如by=?data.table部分所述:

  

"保留每个组中行的顺序,顺序也是如此   这些团体。"

所以预期的结果正是你得到的。处理排序的另一种方法是使用:

DT[,mean(var),keyby=group]

再次根据?data.table文档:

  

"通常的做法是在您希望时常规使用keyby=   结果要排序。"