如何将列总和(有条件)添加为新列?
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
我有一个 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