我有以下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%
答案 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, "%")][]