我正在寻找一种在基于附加列的 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/

10-12 20:50