R 滚动累积积

R 滚动累积积,r,cumulative-sum,R,Cumulative Sum,我有这样的数据 A B 1 1 1 2 3 3 5 4 7 我想计算B列中的以下滚动累积积。在Excel中,我有以下公式 B2 = (1 + A2/10)*B1 到目前为止,我已经尝试使用一个helper列,它是1+Ax/100的结果,一个完全相同的列滞后于1,然后被彼此相乘。因为没有应用轧制产品,所以不会起作用。我也试过s.th rollapply(columnm,1,FUN = prod, fill = NA, alig

我有这样的数据

    A    B    
 1  1    1
 2  3    
 3  5    
 4  7    
我想计算B列中的以下滚动累积积。在Excel中,我有以下公式

B2 = (1 + A2/10)*B1
到目前为止,我已经尝试使用一个helper列,它是1+Ax/100的结果,一个完全相同的列滞后于1,然后被彼此相乘。因为没有应用轧制产品,所以不会起作用。我也试过s.th

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
提前谢谢你这是你想要的吗

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
这是你想要的吗

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

为什么不使用for循环?为什么不使用for循环?