【问题标题】:sort data.table after grouping分组后排序data.table
【发布时间】:2016-12-09 05:36:21
【问题描述】:

我有这样的数据

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]

但是上面的代码不起作用,有什么见解吗?

【问题讨论】:

    标签: r sorting data.table


    【解决方案1】:

    这可以通过两步过程完成 - 即 1) 创建一个按“名称”分组的 sum 列,然后基于新列 (“V1”) 创建 order 并将该列分配为 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]
    

    【讨论】:

    • 我认为您需要使用setorder(或setkey)通过引用来更改数据的顺序。
    猜你喜欢
    • 2021-12-05
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2019-07-23
    相关资源
    最近更新 更多