【问题标题】:Merge/join longitudinal data based on two variables基于两个变量合并/连接纵向数据
【发布时间】:2021-07-20 19:36:54
【问题描述】:

我正在尝试合并两个长格式的纵向数据。

df1:
patientid visit mental-health
703-FD    1     depressed
703-FD    2     depressed
703-FD    3     depressed
707-NM    1     non-depressed
707-NM    2     non-depressed
707-NM    3     depressed 

df2:
patientid visit HIV_disclosure 
703-FD    1     yes
703-FD    2     yes
703-FD    3     yes
707-NM    1     no
707-NM    2     no
707-NM    3     yes

我试过的代码:

data_combined <- full_join(x=df1, y=df2, by="patientid"): 

patientid visit.x mental-health  visit.y   HIV disclosure
703-FD    1       depressed      1         yes
703-FD    1       depressed      2         yes
703-FD    1       depressed      3         yes
703-FD    2       depressed      1         yes
703-FD    2       depressed      2         yes
703-FD    2       depressed      3         yes
703-FD    3       depressed      1         yes
703-FD    3       depressed      2         yes
703-FD    3       depressed      3         yes
707-NM    1     non-depressed    1         no
707-NM    1     non-depressed    2         no
707-NM    1     non-depressed    3         yes
707-NM    2     non-depressed    1         no
707-NM    2     non-depressed    2         no
707-NM    2     non-depressed    3         yes
707-NM    3     depressed        1         no
707-NM    3     depressed        2         no
707-NM    3     depressed        3         yes

如何编辑上面的代码以同时通过 patientid 和 visit 变量合并?

我试过了:

library (dplyr)
data_combined <- full_join(x=df1, y=df2, by="patientid", "visit")

所需的加入/合并数据框:

patientid visit  mental-health  HIV disclosure
703-FD    1       depressed         yes
703-FD    2       depressed         yes
703-FD    3       depressed         yes
707-NM    1     non-depressed       no
707-NM    2     non-depressed       no
707-NM    3       depressed         yes

我确定这是一个简单的代码,但我已经为此苦苦挣扎了一段时间;请帮忙。

【问题讨论】:

标签: r join merge longitudinal


【解决方案1】:

默认情况下,dplyr 连接函数将通过所有公共变量进行连接。在您的数据中,这两个变量是patientid 和visit。因此,对于您提供的示例数据,以下简化代码应该可以工作:

library(dplyr)
data_combined <- full_join(x=df1, y=df2)

如果要指定两列(可能有更多共同的列),则需要为by = 参数提供一个向量。

data_combined <- full_join(x=df1, y=df2, by = c("patientid", "visit"))

您的原始代码仅提供by = 'patientid'。由于'visit' 在逗号之后,full_join() 会尝试将'visit' 应用于full_join() 的另一个可能参数。

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2017-07-21
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多