У меня есть 2 фрейма данных, один (df1
), который записывает ежедневное возникновение различных действий, и другой (df2
), который записывает свойства произошедшего действия в течение дня.
Начиная с df1
можно идентифицировать повторное появление действия, а также продолжительность. Время начала дня определяется переменной Date
.
Например:
id
12 вхождение начинается в день 1 и заканчивается в день d7. В этом случае вхождение составляет 7, а продолжительность - 11. - для
id
123, неделя начинается в день 5 и заканчивается в день d7; произошло в повторном порядке из-за того, что в 6-й день были промежутки, а длительность равна 6, а идентификатор 123 (начинается в 6-й день и заканчивается в 7-й день) происходил 2 раза подряд и продолжительностью 6.
В df1
переменная Date определяет день, когда началась запись. Например, запись с идентификатором 12 началась в день 1 и т. Д.
Я хотел бы определить, есть ли во время последовательного вхождения записи о свойствах действия в df2
.
Например, идентификатор 12 произошел 7 раз, а продолжительность - 12, есть запись для среды (день 3 в df1
), и эта запись соответствует 3 дням последовательного вхождения. Для идентификатора 123 нет данных (например, нет последовательного вхождения), но для идентификатора 10 для 6-дневного вхождения и продолжительности 18 существует запись в 6-й день.
Df1:
id day1 day2 day3 day4 day5 day6 day7 Date
12 2 1 2 1 1 3 1 Mon
123 0 3 0 3 3 0 3 Fri
10 0 3 3 3 3 3 3 Sat
Df2:
id c1 c2 Date
12 3 3 Wednesday
123 3 2 Fri
10 3 1 Sat
Результат:
id c1 c2 Occurrence Position
12 3 3 7 3
123 0 0 0 0
10 3 1 2 1
Пример данных: df1
structure(list(id = c(12L, 123L, 10L), day1 = c(2L, 0L, 3L),
day2 = c(1L, 3L, 3L), day3 = c(2L, 0L, 3L), day4 = c(1L,
3L, 3L), day5 = c(1L, 3L, 3L), day6 = c(3L, 0L, 3L), day7 = c(1L,
3L, 3L), Date = c("Monday", "Friday", "Saturday")), row.names = c(NA,
-3L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x000002a81a571ef0>)
df2:
structure(list(id = c(12, 123, 10), c1 = c(3, 3, 3), c2 = c(3,
2, 1), Date = structure(c(3L, 1L, 2L), .Label = c("Friday", "Saturday",
"Wednesday"), class = "factor")), row.names = c(NA, -3L), class = "data.frame")