【问题标题】:How to add column sum (with condition) as new column?如何将列总和(带条件)添加为新列?
【发布时间】:2015-12-12 02:49:35
【问题描述】:

我有一个具有以下形状的 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 命令做的是添加订单的项目总数并在每一行中给出:

    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 并将其与第一个合并到那里。但我认为必须有一种更优雅的方式。 :)

感谢您的帮助!

【问题讨论】:

标签: r data.table aggregation


【解决方案1】:

要利用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

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 2022-09-26
    • 2022-11-28
    • 1970-01-01
    • 2015-11-04
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多