我的数据看起来像这样
A B
1 1 1
2 3
3 5
4 7
我想在B列中计算以下滚动累积产品。在Excel中,我将得到以下公式
B2 = (1 + A2/10)*B1
到目前为止,我尝试使用辅助列,它是1 + Ax / 100的结果,而一个完全相同,只是滞后1,然后相互相乘。由于不适用轧制产品,因此不适用。我也试过像
这样的人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
提前致谢
答案 0 :(得分:1)
这是你想要的吗?
A=c(1,3,5,7)
cumprod(c(1,(A[-1]/10+1)))
> cbind(A,B=cumprod(c(1,(A[-1]/10+1))))
A B
[1,] 1 1.000
[2,] 3 1.300
[3,] 5 1.950
[4,] 7 3.315