r cumsum 微分重置为 >0

r cumsum differentiate reset at >0

我对 R 很陌生,尝试了论坛上的一些公式,但不知何故我无法修改它们以满足我的条件。 我想构建一个 cumsum,它在 E 列中的变量 >=0 时开始新的:

NR E Proability Cumsum    
1  -.2 .2 .2   
2  -.15 .2 .4     
3 -.1   .2 .6    
4 .1  .2 .2   
5 .2  .2 .4

最后一列应该是结果。

有人有想法吗?

非常感谢:)

data.table 包中有一个名为 rleid 的非常有用的函数,您可以将其用于分组。我会将它与一些基本功能结合使用:

library(data.table)
df <- transform(df, cumsum2 = ave(Proability, rleid(E > 0), FUN = cumsum))

或者,如果你想充分利用data.table的功能,那就是

setDT(df)
df[, cumsum2 := cumsum(Proability), by = rleid(E > 0)]
setDF(df) # optional