Я пытаюсь объединить два кадра данных (df1
и df2
).Совокупность одного кадра данных по временным интервалам из другого фрейма данных
Первый содержит 3 переменных: ID
, Date1
и Date2
.
df1
ID Date1 Date2
1 2016-03-01 2016-04-01
1 2016-04-01 2016-05-01
2 2016-03-14 2016-04-15
2 2016-04-15 2016-05-17
3 2016-05-01 2016-06-10
3 2016-06-10 2016-07-15
Второй также содержит 3 переменные: ID
, Date3
и Value
.
df2
ID Date3 Value
1 2016-03-15 5
1 2016-04-04 7
1 2016-04-28 7
2 2016-03-18 3
2 2016-03-27 5
2 2016-04-08 9
2 2016-04-20 2
3 2016-05-05 6
3 2016-05-25 8
3 2016-06-13 3
Идея заключается в том, чтобы получить, для каждого df1
строки, сумма df2$Value
, которые имеют один и тот же ID
и для которых Date3
между Date1
и Date2
:
ID Date1 Date2 SumValue
1 2016-03-01 2016-04-01 5
1 2016-04-01 2016-05-01 14
2 2016-03-14 2016-04-15 17
2 2016-04-15 2016-05-17 2
3 2016-05-01 2016-06-10 14
3 2016-06-10 2016-07-15 3
Я знаю, как сделать цикл на этом, но рамки данных огромны! У кого-то есть эффективное решение? Изучая data.table
, plyr
и dplyr
, но не смогли найти решение.
Вы можете использовать 'foverlaps' из' data.table' – akrun
Возможный дубликат [Проверка даты между двумя датами в R] (http://stackoverflow.com/questions/31353595/checking-if-date-is -between-two-date-in-r) –