r cumsum将重置区分为> 0

时间:2016-11-17 13:10:22

标签: r cumsum

我对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

最后一列应该是结果。

有没有人有想法?

非常感谢:)

1 个答案:

答案 0 :(得分:1)

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

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