2016-10-25 72 views
0

我有一个看起来像这样滚动累积产

A B  
1 1 1 
2 3  
3 5  
4 7  

在这里我要计算在B列在Excel下面的滚动累积产我有以下公式

B2 = (1 + A2/10)*B1 

I数据到目前为止,已经尝试使用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 

在此先感谢

+0

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

回答

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 
+0

是的,这工作,感谢您的快速回复 – ThatQuantDude