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

How to add column sum (with condition) as new column?

我有一个 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

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

    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

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

感谢您的帮助!

要利用 data.table 的效率,使用类似的东西会有所帮助:

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