【发布时间】:2021-05-09 14:23:21
【问题描述】:
我需要在R 中加入两个data.frames,并且他们都有两个候选id,但是缺少很多数据(所以我不能只选择一个并过滤掉其余的)。
编辑两个数据集的可重现示例,以及期望的结果:
messy1 <- data.frame(id1 = c(11, NA, 13, 11, 12, NA), id2 = c(NA, 22, 23, 21, NA, 23), time = rep(1:2, each = 3))
messy2 <- data.frame(id1 = c(12, NA, 14, 14), id2 = c(22, 23, 24, NA), time = c(1, 1, 1, 2))
desired1 <- data.frame(id1 = rep(11:13, 2), id2 = rep(21:23, 2), time = rep(1:2, each = 3)) # 12/22 is only available in messy2
desired2 <- data.frame(id1 = c(12:13, 14, 14), id2 = c(22:23, 24, 24), time = c(rep(1, 3), 2)) # 13/23 is only available in messy1
desired_joined <- full_join(desired1, desired2)
> messy1
id1 id2 time
1 11 NA 1
2 NA 22 1
3 13 23 1
4 11 21 2
5 12 NA 2
6 NA 23 2
> messy2
id1 id2 time
1 12 22 1
2 NA 23 1
3 14 24 1
4 14 NA 2
> desired_joined
id1 id2 time
1 11 21 1
2 12 22 1
3 13 23 1
4 11 21 2
5 12 22 2
6 13 23 2
7 14 24 1
8 14 24 2
最终编辑
上面的例子现在准确地反映了我试图解决的问题。弄清楚这一点后,@Ben 提供的评论才是真正的解决方案。
已删除过时的问题部分,以避免将来遇到此问题的任何人进一步混淆。
【问题讨论】:
-
考虑在
tidyr中使用fill- 你可以在id2上使用group_byid1和fill(反之亦然)。 -
这是一个好的开始,谢谢!我仍然无法用这种方法重现上述目标。我将编辑我当前的尝试,看看我可能会离开。
标签: r missing-data record-linkage