I have a data frame with 2 columns like this:
> data.frame(x=1:10, y=c(0,0,0,1,1,0,0,1,0,1))
x y
1 1 0
2 2 0
3 3 0
4 4 1
5 5 1
6 6 0
7 7 0
8 8 1
9 9 0
10 10 1
and I want to get the cumulative sum of column x
(cumsum(df$x)
), but the sum should be reset after a 1
appears in column y
. This is the result I am looking for:
1
3
6
10
5
6
13
21
9
19
How can I achieve this in R?
A
data.table
method usingshift
You can achieve that by using
ave
: