【发布时间】:2017-03-07 18:14:15
【问题描述】:
我的数据看起来像这样
A B
1 1 1
2 3
3 5
4 7
我想在 B 列中计算以下滚动累积产品。在 Excel 中,我将有以下公式
B2 = (1 + A2/10)*B1
到目前为止,我已经尝试使用一个辅助列,它是 1 + Ax/100 的结果,而一个完全相同的列只是滞后 1,然后彼此相乘。由于未应用滚动产品,因此无法使用。我也尝试过 s.th like
rollapply(columnm,1,FUN = prod, fill = NA, align = 'left')
不幸的是它仍然不起作用。
我希望为 B 获得这些结果
A B
1 1 1
2 3 1.3
3 5 1.95
4 7 3.315
[编辑]
作为对原始问题的扩展,有没有办法在基于附加列的 ifelse 语句中执行相同的滚动乘积?
A B C
1 1 1 1
2 3 1 1
3 5 0
4 7 0
excel 等价物是
C3 = IF(B3=0,(1+A3/10)*C2,1)
我无法让接受的解决方案适用于这种情况,因为它总是只引用 A 列中的数据,我最终得到的结果与之前的解决方案相同。
我希望得到以下结果
A B C
1 1 1 1
2 3 1 1
3 5 0 1.5
4 7 0 2.55
提前致谢
【问题讨论】:
-
为什么不使用 for 循环?
标签: r cumulative-sum