Я борюсь с логическим обоснованием написания для l oop. Рассмотрим следующие два кадра данных:
>> df1
A B C hit_time E
0 bar one small 2019-12-11 19:16:51 1
1 bar one large 2019-12-09 20:21:43 2
2 foo two large 2019-12-11 15:11:24 1
3 bar two small 2019-12-05 16:41:21 2
4 bar two small 2019-12-06 17:31:20 3
5 bar one large 2019-12-03 19:13:06 2
6 bar one small 2019-12-04 18:25:04 1
7 bar two small 2019-12-02 21:45:38 1
8 bar two large 2019-12-08 20:32:44 1
>> df2
X Y Z Phase_One Phase_Two Phase_Three
0 foo one small 2019-12-01 06:18:00 2019-12-01 06:38:00 2019-12-01 06:48:00
1 bar one small 2019-12-01 06:33:00 2019-12-01 06:53:00 2019-12-01 07:03:00
2 foo two large 2019-12-11 15:01:24 2019-12-11 15:21:24 2019-12-11 15:31:24
3 bar two small 2019-12-05 16:31:21 2019-12-05 16:51:21 2019-12-05 17:01:21
4 bar two small 2019-12-06 17:21:20 2019-12-06 17:41:20 2019-12-06 17:51:20
5 bar one large 2019-12-03 19:03:06 2019-12-03 19:23:06 2019-12-03 19:33:06
6 bar one large 2019-12-04 18:15:04 2019-12-04 18:35:04 2019-12-04 18:45:04
7 bar two large 2019-12-02 21:35:38 2019-12-02 21:55:38 2019-12-02 22:05:38
8 bar two large 2019-12-08 20:22:44 2019-12-08 20:42:44 2019-12-08 20:52:44
Теперь я пытаюсь выполнить sh следующее в for l oop:
- Разделить df1 на столбец C значения
- Разделить df2 на те же значения в столбце Z
- Рассчитать следующее:
df3 <- df2[, Phase_One_ := df1[df2,on=.(hit_time >= Phase_One, hit_time <= Start_Time), sum(E),by=.EACHI]$V1]
df3 <- df2[, Phase_Two_ := df1[df2,on=.(hit_time >= Start_Time, hit_time <= Phase_Two), sum(E),by=.EACHI]$V1]
df3 <- df2[, Phase_Three_ := df1[df2,on=.(hit_time >= Phase_Two, hit_time <= Phase_Three),sum(E),by=.EACHI]$V1]
rbind всех данных так, чтобы сумма произошла на основе соответствующих значений в
df1$C
и
df2$Z
соответственно.
Теперь я понимаю, что циклы for работают медленно, поэтому любые предложения позволяют суммировать столбец E в новый фрейм данных в новых столбцах на основе последних трех столбцов, содержащих разные сроки в дф2. Заранее спасибо.