提问人:awastus 提问时间:12/9/2022 更新时间:12/9/2022 访问量:120
在 R 中,如何合并两个数据集(一个基线和一个随访),同时考虑因随访而丢失的个体?[复制]
In R, how can I merge two datasets (one baseline and one follow-up) while taking into account individuals lost to follow-up? [duplicate]
问:
这个问题在这里已经有答案了:
如何连接(合并)数据框(内部、外部、左侧、右侧)( 14 个答案)
INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么区别?[复制] (2 个答案)
12个月前关闭。
提前感谢您的帮助。
我有一个大约 30000 人的基线数据集。每个人都有一个唯一的身份证号码。我还有一个相同的人的随访数据集,可能有 2000 人因随访而丢失。 我正在尝试合并这些数据集,将两个数据集中每个 ID 号的数据进行匹配。对于因随访而丢失的个人,我想将他们保留在合并的数据集中,但他们的行可能需要包含一堆 NA,因为结果无法在随访数据集中测量。
R 中有没有办法解决这个问题?
(作为一个相对较新的 R 用户,我真的不知道如何开始解决这个问题。我有一种感觉,我需要使用 dplyr,但是根据他们的 ID 匹配两个数据集中的个体并为那些失去随访的人生成 NA 超出了我的范围。任何帮助或提示将不胜感激。
答:
1赞
jpsmith
12/9/2022
#1
您可以与命令一起使用 - 在语句中将基线数据放在第一位,然后将后续数据放在第二位。例如,假设您的基线数据是,随访是,但您错过了最后 5 名要随访的患者:merge
all.x = TRUE
merge
bl
fu
bl <- data.frame(id = 1:20,
var_bl = letters[1:20])
fu <- data.frame(id = 1:15,
var_fu = letters[1:15])
alldata <- 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>
请注意,为了将来参考,有一个(它将所有 ob 保留在第二个数据集中(即 ))和一个将所有 ob 保留在两个数据集中的声明)all.y
fu
all
请注意 r2evans 对您的问题的评论,但为方便起见,一种方法是:dplyr
dplyrdata <- dplyr::left_join(bl, fu)
这将输出与上述相同的数据。
评论