基于R中的多个组的减法

时间:2017-09-12 13:47:36

标签: r

我有以下df,我希望填充变量3,它将基于国家和分支以及变量1的M1除以变量2的M1 - 1。

因此,例如,第1行将给出N / A,因为没有M1 - 1,但对于M2,变量3的结果将是82/992 = 8.27%。这样做的最佳方法是什么?

我可以考虑创建另一个表,它将变量2移动到需要减去的月份,然后使用dplyr与当前表合并。

我想知道是否有更简单的方法吗?

Country Branch  Month   Variable 1  Variable 2  Variable 3
X       A       12      41          992         N/A
X       A       1       82          693         8.27%
X       A       2       40          686         5.77%
X       B       12      84          793         N/A
X       B       1       6           947         0.76%
X       B       2       48          809         5.07%
Y       A       12      78          546         N/A
Y       A       1       16          796         2.93%
Y       A       2       50          945         6.28%
Y       B       12      57          862         N/A
Y       B       1       73          689         8.47%
Y       B       2       1           971         0.15%

1 个答案:

答案 0 :(得分:0)

我们可以使用

library(data.table)
setDT(df1)[, Variable3 := as.character(round(100*Variable1/shift(Variable2), 2)), 
          by = .(Country, Branch)
           ][!is.na(Variable3), Variable3 := paste0(Variable3, "%")][]