Merge/join 基于两个变量的纵向数据
Merge/join longitudinal data based on two variables
我正在尝试合并两个都是长格式的纵向数据。
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")
所需的joined/merged数据帧:
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
我确定这是一个简单的代码,但我已经为此苦苦挣扎了一段时间;请协助。
默认情况下,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()
.
的另一个可能参数
我正在尝试合并两个都是长格式的纵向数据。
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")
所需的joined/merged数据帧:
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
我确定这是一个简单的代码,但我已经为此苦苦挣扎了一段时间;请协助。
默认情况下,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()
.