2016-10-25 33 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