如何将列总和(带条件)添加为新列?

时间:2015-09-15 18:18:25

标签: r data.table aggregation

我有一个data.table,其形状如下:

int bucket[20] = {0, };            // all values start at 0
for (int i = 0; i < 200000; ++i) { // you need 200000 random values
    int j = random(0, 20);         // produce a number between 0 and 19
    bucket[j] = bucket[j] + 1;     // increment the appropriate counter
}

所以,有三个订单包含一些商品。我想用一个data.table命令做的是添加一个订单的项目总数并在每一行中给出:

    Order_ID Item Amount
1:        a   i1      1
2:        a   i2      2
3:        a   i3      3
4:        b   i1      2
5:        b   i3      1
6:        c   i2      3
7:        c   i3      4

我通过创建一个新的data.table与第一个合并它来到达那里。但我认为必须有一种更优雅的方式。 :)

感谢您的帮助!

1 个答案:

答案 0 :(得分:7)

为了利用dt[, Total := sum(Amount), by=Order_ID] # Order_ID Item Amount Total # 1: a i1 1 6 # 2: a i2 2 6 # 3: a i3 3 6 # 4: b i1 2 3 # 5: b i3 1 3 # 6: c i2 3 7 # 7: c i3 4 7 的效率,它有助于使用类似的东西:

cx