分组后对data.table进行排序

时间:2016-12-09 05:36:22

标签: r sorting data.table

我有这样的数据

z = data.table(name =sample(letters[1:6],10,replace=T),
Var1=rnorm(10,1,2),
Var2 =runif(10,1,10))

我想要对var1by名称求和,并将这些总和排序为假代码

z[order(sum(Var1)),sum(Var1),by =name]

但上面的代码不起作用,任何见解?

1 个答案:

答案 0 :(得分:0)

这可以通过两个步骤完成 - 即1)创建一个按名称'分组的sum列。然后order基于新列(' V1')并将该列指定为NULL(如果打算对整个数据集进行排序)

z[, V1 := sum(Var1) , by = name][order(V1)][, V1 := NULL][]

如果我们只订购汇总输出

z[, sum(Var1) , by = name][order(V1)]

或者@Frank建议set函数效率更高

z[, V1 := sum(Var1) , by = name]
setorder(z, V1)[, V1 := NULL]