【问题标题】:Use the current calculated value from a group by sum to calculate another value in R using data.table使用按总和从一组中的当前计算值使用 data.table 计算 R 中的另一个值
【发布时间】:2019-07-25 07:07:28
【问题描述】:

我试图弄清楚如何使用我刚刚计算的值来计算下表中的所需结果。我知道如何使用 dplyr 做到这一点,但我在使用 data.table 时遇到了困难并试图学习它。

本质上,我将“国家/地区”分组,并对新列“期望结果”的“卷 A”值求和,然后使用该新值并将其从其特定行中各自的“卷 B”数据中减去。

Country | Volume A | Volume B | Desired Results    
Canada  | 100      | 50       | 250 
Canada  | 200      | 150      | 150 
USA     | 500      | 200      | 400 
France  | 0        | 0        | 0
USA     | 100      | 200      | 400

【问题讨论】:

  • 为什么不是France 0,像sum(0) - 0
  • 哦,对不起,它应该是 0。我会编辑它。但那是因为我还试图添加一个条件,如果总和为 0,则使其为 NA。

标签: r group-by dplyr data.table aggregation


【解决方案1】:

我们可以使用下面的NewCol 代表期望的结果。

 df[,NewCol:=sum(Volume.A)-Volume.B,.(Country)][]
       Country Volume.A Volume.B Desired.Results NewCol
    1:  Canada      100       50             250    250
    2:  Canada      200      150             150    150
    3:     USA      500      200             400    400
    4:  France        0        0               0      0
    5:     USA      100      200             400    400

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2015-12-15
    相关资源
    最近更新 更多