繁体   English   中英

滚动累积产品

[英]Rolling cumulative product

我有看起来像这样的数据

    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

提前致谢

这是你想要的吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM