我正在寻找一种在基于附加列的 ifelse 语句中进行滚动产品的方法?
我的数据看起来像这样
A B C
1 1 1
2 3 1
3 5 0
4 7 0
等效的excel公式是
C3 = IF(B3=0,(1+A3/10)*C2,1)
我尝试使用
ifelse(B==0,cumprod(c(1,(A[-1]/10+1))),1)
我无法在这种情况下使用它,因为它始终仅指 A 列中的数据。
我希望得到以下结果
A B C
1 1 1 1
2 3 1 1
3 5 0 1.5
4 7 0 2.55
提前致谢
最佳答案
试试这个:
df$C <- cumprod(with(df, ifelse(B==0, A/10+1, 1)))
或使用
Reduce
:df$C <- Reduce('*', with(df, ifelse(B==0, A/10+1, 1)), accumulate = T)
关于基于 elseif 条件的滚动累积乘积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40272212/