基于elseif条件滚动累加积
Rolling cumulative product based on elseif condition
我正在寻找一种在基于附加列的 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)
我正在寻找一种在基于附加列的 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)