在 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]

提问人:awastus 提问时间:12/9/2022 更新时间:12/9/2022 访问量:120

问:

提前感谢您的帮助。

我有一个大约 30000 人的基线数据集。每个人都有一个唯一的身份证号码。我还有一个相同的人的随访数据集,可能有 2000 人因随访而丢失。 我正在尝试合并这些数据集,将两个数据集中每个 ID 号的数据进行匹配。对于因随访而丢失的个人,我想将他们保留在合并的数据集中,但他们的行可能需要包含一堆 NA,因为结果无法在随访数据集中测量。

R 中有没有办法解决这个问题?

(作为一个相对较新的 R 用户,我真的不知道如何开始解决这个问题。我有一种感觉,我需要使用 dplyr,但是根据他们的 ID 匹配两个数据集中的个体并为那些失去随访的人生成 NA 超出了我的范围。任何帮助或提示将不胜感激。

R 数据库 DPLYR 数据操作

评论

0赞 r2evans 12/9/2022
仅供参考,一些关于形成问题以使其更具可重复性的非常好的讨论:stackoverflow.com/q/5963269最小可重复示例stackoverflow.com/tags/r/info。欢迎!

答:

1赞 jpsmith 12/9/2022 #1

您可以与命令一起使用 - 在语句中将基线数据放在第一位,然后将后续数据放在第二位。例如,假设您的基线数据是,随访是,但您错过了最后 5 名要随访的患者:mergeall.x = TRUEmergeblfu

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.yfuall

请注意 r2evans 对您的问题的评论,但为方便起见,一种方法是:dplyr

dplyrdata <- dplyr::left_join(bl, fu)

这将输出与上述相同的数据。