Я хотел бы найти совокупную сумму между двумя строками с разными условиями.
Мои данные выглядят так:
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