У меня есть датафрейм df со столбцами Date, Inlow и Outflow. Я хочу вычислить столбец «Выход» так, чтобы, если входное значение было больше 1000, выходное значение было равно сумме «оттока» каждой из трех последних дат (перед входным значением> = 1000).
df<-data.frame(Date=c("2019-05-13 EEST", "2019-05-13 EEST", "2019-05-13 EEST", "2019-05-13 EEST",
"2019-05-12 EEST", "2019-05-12 EEST", "2019-05-12 EEST", "2019-05-12 EEST",
"2019-05-12 EEST", "2019-05-12 EEST", "2019-05-11 EEST","2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-09 EEST", "2019-05-09 EEST", "2019-05-09 EEST", "2019-05-09 EEST",
"2019-05-09 EEST"),
Inflow=c(0, 0, 0,500, 0,80, 0, 0, 0,38, 0, 0, 0,50, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 100, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 1400, 0, 100, 0, 0),
Outflow= c(-40, -30, -30, 0, -14.35, 0, -66, -28, -10, 0,-50, -50, -3.99,0,
-50, -25, -25,-50,-50, -100, -100, -50, -46, -50, -50, 0, -50,-50,-50,-100,
-100, -100, -100, -100, -100, -100, 0, -100, 0, -100, -75))
Вывод, который мне нужен в случае вышеприведенных примеров, будет после обнаружения притока в сумме 1400 каждый. + (- 100) = - 1499; lag2 Отток = -50; Отток lag3 = -14,35 + 0 + ... + 0 = -89,65
output<- data.frame(Date=c("2019-05-13 EEST","2019-05-13 EEST","2019-05-13 EEST", "2019-05-13 EEST",
"2019-05-12 EEST", "2019-05-12 EEST", "2019-05-12 EEST", "2019-05-12 EEST",
"2019-05-12 EEST", "2019-05-12 EEST", "2019-05-11 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST", "2019-05-10 EEST",
"2019-05-09 EEST", "2019-05-09 EEST", "2019-05-09 EEST", "2019-05-09 EEST",
"2019-05-09 EEST"),Inflow=c(0, 0, 0,500, 0,80, 0, 0, 0,38, 0, 0, 0,50, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 1400, 0, 100,
0, 0),
Outflow= c(-40, -30, -30, 0, -14.35, 0, -66, -28, -10, 0,-50, -50, -3.99, 0,
-50, -25, -25,-50,-50, -100, -100, -50, -46, -50, -50, 0, -50,-50,-50, -100,
-100, -100, -100, -100, -100, -100, 0, -100, 0, -100, -75),
Output=c(0,0,0,0,-89.65,-89.65,-89.65,-89.65,-89.65,-89.65,-89.65,-50,
-1499,-1499, -1499,-1499,-1499,-1499, -1499,-1499,-1499, -1499,-1499,-1499,
-1499,-1499,-1499, -1499,-1499,-1499,-1499, -1499,-1499, -1499,-1499,-1499,
-1499,0,0,0,0))
Ожидаемый результат:
output
Date Inflow Outflow Output
1 2019-05-13 EEST 0 -40.00 0.00
2 2019-05-13 EEST 0 -30.00 0.00
3 2019-05-13 EEST 0 -30.00 0.00
4 2019-05-13 EEST 500 0.00 0.00
5 2019-05-12 EEST 0 -14.35 -89.65
6 2019-05-12 EEST 80 0.00 -89.65
7 2019-05-12 EEST 0 -66.00 -89.65
8 2019-05-12 EEST 0 -28.00 -89.65
9 2019-05-12 EEST 0 -10.00 -89.65
10 2019-05-12 EEST 38 0.00 -89.65
11 2019-05-11 EEST 0 -50.00 -89.65
12 2019-05-10 EEST 0 -50.00 -50.00
13 2019-05-10 EEST 0 -3.99 -1499.00
14 2019-05-10 EEST 50 0.00 -1499.00
15 2019-05-10 EEST 0 -50.00 -1499.00
16 2019-05-10 EEST 0 -25.00 -1499.00
17 2019-05-10 EEST 0 -25.00 -1499.00
18 2019-05-10 EEST 0 -50.00 -1499.00
19 2019-05-10 EEST 0 -50.00 -1499.00
20 2019-05-10 EEST 0 -100.00 -1499.00
21 2019-05-10 EEST 0 -100.00 -1499.00
22 2019-05-10 EEST 0 -50.00 -1499.00
23 2019-05-10 EEST 0 -46.00 -1499.00
24 2019-05-10 EEST 0 -50.00 -1499.00
25 2019-05-10 EEST 0 -50.00 -1499.00
26 2019-05-10 EEST 100 0.00 -1499.00
27 2019-05-10 EEST 0 -50.00 -1499.00
28 2019-05-10 EEST 0 -50.00 -1499.00
29 2019-05-10 EEST 0 -50.00 -1499.00
30 2019-05-10 EEST 0 -100.00 -1499.00
31 2019-05-10 EEST 0 -100.00 -1499.00
32 2019-05-10 EEST 0 -100.00 -1499.00
33 2019-05-10 EEST 0 -100.00 -1499.00
34 2019-05-10 EEST 0 -100.00 -1499.00
35 2019-05-10 EEST 0 -100.00 -1499.00
36 2019-05-10 EEST 0 -100.00 -1499.00
37 2019-05-09 EEST 1400 0.00 -1499.00
38 2019-05-09 EEST 0 -100.00 0.00
39 2019-05-09 EEST 100 0.00 0.00
40 2019-05-09 EEST 0 -100.00 0.00
41 2019-05-09 EEST 0 -75.00 0.00
Я знаю, как выполнять условные вычисления с помощью dplyr с одним условным столбцом, но я не разобрался с двумя столбцами с задержкой. Буду признателен за вашу помощь!