我有这样的数据
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]
但上面的代码不起作用,任何见解?
答案 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]