【问题标题】:In R, how can I merge two datasets (one baseline and one follow-up) while taking into account individuals lost to follow-up?在 R 中,如何合并两个数据集(一个基线和一个后续数据集),同时考虑到失访的个人?
【发布时间】:2022-12-09 01:07:33
【问题描述】:
预先感谢您的帮助。
我有大约 30000 个人的基线数据集。每个人都有一个唯一的身份证号码。我还有一个包含同一个人的后续数据集,可能有 2000 人失访。
我正在尝试合并这些数据集,为每个 ID 号匹配来自两个数据集的数据。对于失访的个人,我想将他们保留在合并数据集中,但他们的行可能需要包含一堆 NA,因为无法在后续数据集中衡量结果。
R中有没有办法解决这个问题?
(作为一个相对较新的 R 用户,我真的不知道如何开始解决这个问题。我觉得我需要使用 dplyr,但是根据他们的 ID 从两个数据集中匹配个人并为那些失去后续行动超出了我的范围。任何帮助或提示将不胜感激。)
【问题讨论】:
标签:
r
database
dplyr
data-manipulation
【解决方案1】:
您可以将 merge 与 all.x 命令一起使用 - 先放置基线数据,然后再放置后续数据。例如,假设您的基线数据是bl,后续数据是fu:
bl <- data.frame(id = 1:20,
var_bl = letters[1:20])
fu = data.frame(id = 1:15,
var_fu = letters[1:15])
all <- merge(bl, fu, by = "id", all.x = TRUE)
输出:
id var_bl var_fu
1 1 a a
2 2 b b
3 3 c c
4 4 d d
5 5 e e
6 6 f f
7 7 g g
8 8 h h
9 9 i i
10 10 j j
11 11 k k
12 12 l l
13 13 m m
14 14 n n
15 15 o o
16 16 p <NA>
17 17 q <NA>
18 18 r <NA>
19 19 s <NA>
20 20 t <NA>