【发布时间】:2020-07-24 03:34:56
【问题描述】:
我有 2 个要合并的数据框。数据集之间的区别在于观察的数量和它们收集的方式。在df1observation 中记录了 2 个不同的日子。每条记录都有一个索引,id1 个人识别号,id2 指的是录制的日期(天必须不同)。还有一个 Day 变量记录录制的星期几。
在df2 中仅根据序列号和 id1 个人识别号记录观察结果。每人只有一次观察。同样,这里还有一个 Day 变量,用于记录录制开始的时间。
我想确定 df2 中与 df1 同一天记录的观察结果。
我尝试创建一个新索引(对索引和 id1 进行分组)以根据天数进行长期合并。
Df1:- day 表示进行观察的时间(例如,索引 12;id1 - 仅表示 1 个人;id2 表示 2 天 -Wednesday id2 1 和 Sunday id2 2)
index id1 id2 Day obs1 obs2 obs3
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: - 这里 day 变量表示观察的开始日期(例如 id 12 day2 和 id 123 day1)
index id1 Day day1 day2 day3 day4 day5 day6 day7
12 1 Tuesday 2 1 2 1 1 3 1
123 1 Friday 0 3 0 3 3 0 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))
【问题讨论】:
-
当您说从 day61-da696 和 day71-day796 开始时。它是 7 天的顺序,对吧?