【发布时间】:2020-04-14 21:29:03
【问题描述】:
我有 2 个数据集,其中包含 2 种不同类型的观察结果。观察是在不同的日子里进行的,并以不同的时间间隔记录下来。
这两条记录都有一个序列号,用于识别进行观察的人群。例如序列号 111 表示一群人。这个小组是由不同数量的人组成的。属于这些群体的人数各不相同。例如组 111 由 3 人组成。在日记中,我们可以通过serial 和id1 变量来识别属于不同群体的人。例如serial 111 and id1 2 表示观察是由组 111 中的第二个人进行的。还有一个 Day 变量表示进行观察的工作日。 Day 变量从 1(Monday) to 7 (Sunday) 获取值。
如果在df1 中我们每人有 1 次观察,在df2 中每个人必须进行 2 次观察。可以根据serial, id1 and id2 识别进行观察的人。 Id2 用于区分工作日的观察结果。例如 id 111、id1 3 和 id2 2 可以解释为组 111 中的第 2 个人进行的 2 天观察。观察的工作日同样由Day 变量保存。
我想找出那些在同一天在两本日记中记录信息的人。那么,谁是在同一天填写这两个记录的人。问题是df2 有 2 个观察值,df1 每人只有一个,这使得合并变得困难。
我基于serial and id1 合并,但它们不是唯一标识符。我尝试创建一个新变量并在“日”级别合并。
如何在每日级别上合并 2 个数据集?
library(dplyr)
df1<-df1 %>%
mutate(index = group_indices_(df1, .dots=c("serial", "id1")))
df2<-df2 %>%
mutate(index = group_indices_(df2, .dots=c("serial", "id1", "id2")))
样品日期:
df1
structure(list(serial = c(12, 123, 123, 10, 10), id1 = c(1, 1,
2, 1, 2), Day = c(1, 3, 2, 4, 2)), class = "data.frame", row.names = c(NA,
-5L))
df2
structure(list(serial = c(12, 12, 123, 123, 123, 123, 10, 10,
10, 10, 10, 10), id1 = c(1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 3, 3),
id2 = c(1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2), Day = c(1, 6,
3, 7, 2, 7, 4, 7, 2, 7, 4, 7), index = c(7L, 8L, 9L, 10L,
11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L)), row.names = c(NA, -12L
), class = "data.frame")
样本数据结果:
serial id1 id2 Day
12 1 1 1
123 1 1 3
123 2 1 2
10 1 1 4
10 2 1 2
【问题讨论】: