Как суммировать строки с момента последнего выполнения условия в R - PullRequest
0 голосов
/ 07 марта 2019

Я хотел бы найти совокупную сумму между двумя строками с разными условиями.

Мои данные выглядят так:

row   diff   state
1     30     3
2     30     2
3     30     2
4     30     1
5     30     1
6     30     1
7     30     2
8     30     2
9     30     3
10    30     1

И для каждой строки, где состояние == 1, я хочу знать кумулятивную разницу между этой строкой и предыдущей строкой, где состояние == 3.

Это конечная цель:

row   diff   state   lag  
1     30     3       NA
2     30     2       NA
3     30     2       NA
4     30     1       90
5     30     1       120
6     30     1       150
7     30     2       NA
8     30     2       NA
9     30     3       NA
10    30     1       30

Я пытался:

df$lag[df$state == 1] <- cumsum(df$diff[df$state == 3])

Но это только что дало мне сумму с начала состояния == 1:

row   diff   state   lag  
1     30     3       NA
2     30     2       NA
3     30     2       NA
4     30     1       30
5     30     1       60
6     30     1       90
7     30     2       NA
8     30     2       NA
9     30     3       NA
10    30     1       30
...