Этот вопрос относится к вопросу, опубликованному ранее.
У меня есть 2 кадра данных, которые я хотел бы объединить. Два кадра данных имеют разные размеры (например, dim (df1)
= 16533, 580 и dim(df2)
= 2820, 675`).
Записи были сделаны в разные дни разными лицами / группами лиц.
Переменные от df1
Index
= группа лиц, которые сделали запись (например, она может представлять 1
человек или 2
или подробнее)
id1
= человек из группы, который сделал запись (например, 12 1
= группа 12 person 1; 12 2 = group 12 person 2, etc
.)
id2
= первый или второй день, когда была сделана запись (eg. 12 1 1 = group 12, person 1, 1 day; 12 1 2 = group 12, person 1, 2 day;
)
Day
= день недели, когда была сделана запись в дневнике (например, 12 1 1 Wednesday =group 12, person 1, day 1, weekday Wednesday; 12 1 2 Sunday = group 12, person 1, day 1 , weekday Sunday
)
За этими переменными следует 24h observations
obs1_1-obs1_144=primary observation
obs2_1-obs2_144=secondary observations
obs3_1-obs3_144=tertiary observations
obs4_1-obs4_144=quarterly observations
Пример
df1
index id1 id2 Day obs1_1...obs1_144....obs2_1...obs2_144...obs3_1...obs3_144...obs4_1...obs4_144
12 1 1 Wednesday 1 11 12
12 1 2 Sunday 2 0 0
123 1 1 Tuesday 1 0 1
123 1 2 Saturday 3 0 3
123 2 1 Monday 2 2 4
123 2 2 Saturday 1 0 8
В df2
наблюдения были записаны только на основе индекса и id1. На человека приходится только одно наблюдение. Точно так же здесь есть также переменная Day, которая записывает время начала записи (например, не день записи). Например, здесь id 12 1 Во вторник можно предположить, что группа 12 человек 1 начала записывать наблюдения со вторника.
Неделя делится на:
Monday = 95 variables starting from day11-day196
(in the actual data t0400_0415_d1-t0345_0400_d1)
Tuesday = 95 variables starting day21-day296
(in the actual data t0400_0415_d2-t0345_0400_d2)
Wednesday = 95 variables starting day31-day396
(in the actual data t0400_0415_d3-t0345_0400_d3)
Thursday = 95 variables starting day41-day496
(in the actual data t0400_0415_d4-t0345_0400_d4)
Friday = 95 variables starting day51-day596
(in the actual data t0400_0415_d5-t0345_0400_d5)
Saturday = 95 variables starting day61-day696
(in the actual data t0400_0415_d6-t0345_0400_d6)
Sunday = 95 variables starting day71-day796
(in the actual data t0400_0415_d7-t0345_0400_d7)
Пример df2
index id1 Day day11 day12 day13 day14 day15 day16 day17 .....day196......day796
12 1 Tuesday 2 1 2 1 1 3 1
123 1 Friday 0 3 0 3 3 0 3
Я хотел бы идентифицировать наблюдения из df2, которые были записаны в тот же день, что и в df1.
Что я стремлюсь:
df2
для идентификации последовательных записей (между ежедневными записями нет разрыва). Например, последовательная запись будет выглядеть следующим образом: запись началась во вторник, а записи есть в среду, четверг, пятницу. Это призыв как три последовательных записи. Непоследовательная запись была бы, если запись началась во вторник, и есть запись в среду и пятницу. Так как день перерыва это непоследовательная запись.
df1
Я хотел бы указать индекс и id1 человека, который сделал последовательные записи, а также позицию записи в последовательном наблюдении (например, в 3-х последовательных наблюдениях наблюдение может приходиться на 1,2 или 3 дня) Пост, связанный с одним из моих вопросов
Результат:
index id1 id2 obs1 obs2 obs3
12 1 1 1 11 12
12 1 2 2 0 0
123 1 2 3 0 3
123 2 2 1 0 8
Пример данных
df1:
structure(list(index = c(12, 12, 123, 123, 123, 123), id1 = c(1,
1, 1, 1, 2, 2), id2 = c(1, 2, 1, 2, 1, 2), Day = structure(c(5L,
3L, 4L, 2L, 1L, 2L), .Label = c("Monday", "Saturday", "Sunday",
"Tuesday", "Wednesday"), class = "factor"), obs1 = c(1, 2, 1,
3, 2, 1), obs2 = c(11, 0, 0, 0, 2, 0), obs3 = c(12, 0, 1, 3,
4, 8)), class = "data.frame", row.names = c(NA, -6L))
df2:
structure(list(index = c(12, 123), id1 = c(1, 1), Day = structure(2:1, .Label = c("Friday",
"Tuesday"), class = "factor"), day1 = c(2, 0), day2 = c(1, 3),
day3 = c(2, 0), day4 = c(1, 3), day5 = c(1, 3), day6 = c(3,
0), day7 = c(1, 3)), class = "data.frame", row.names = c(NA,
-2L))