R仅在多列重叠的地方合并数据框
R merge dataframes only where multiple columns overlap
我有 2 个大数据帧(均为 +-300k 行)。数据框 A 包含有关基因的信息。如果某些值重叠,我想从数据框 B 向此数据框添加信息。如果 df.B 中存在 df.B$X1 = df.A$X1 & df.B$X2 = df.A$X2 的行,那么我想要 df.B$X3 将添加到 df.A (df.A$X3) 中的新列,特别是在右行。基本上我想根据列 X1 和 X2 合并 df.A 和 df.B。我从 for 循环开始,但必须有更简单的方法...希望我对我的问题的解释足够好。
谢谢!
> df.A
X1 X2
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 2 3
> df.B
X1 X2 X3
1 1 1 0.5
2 1 8 0.3
3 1 9 0.2
4 2 2 0.4
5 2 9 0.3
6 2 10 0.2
期望的结果:
> df.A
X1 X2 X3
1 1 1 0.5
2 1 2 NA
3 1 3 NA
4 2 1 NA
5 2 2 0.4
6 2 3 NA
您想要左连接
dplyr
library(dplyr)
df.A %>% left_join(df.B, by = c("X1","X2"))
data.table
library(data.table)
merge(setDT(df.A), setDT(df.B), all.x = TRUE, by = c("X1","X2"))
我有 2 个大数据帧(均为 +-300k 行)。数据框 A 包含有关基因的信息。如果某些值重叠,我想从数据框 B 向此数据框添加信息。如果 df.B 中存在 df.B$X1 = df.A$X1 & df.B$X2 = df.A$X2 的行,那么我想要 df.B$X3 将添加到 df.A (df.A$X3) 中的新列,特别是在右行。基本上我想根据列 X1 和 X2 合并 df.A 和 df.B。我从 for 循环开始,但必须有更简单的方法...希望我对我的问题的解释足够好。
谢谢!
> df.A
X1 X2
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 2 3
> df.B
X1 X2 X3
1 1 1 0.5
2 1 8 0.3
3 1 9 0.2
4 2 2 0.4
5 2 9 0.3
6 2 10 0.2
期望的结果:
> df.A
X1 X2 X3
1 1 1 0.5
2 1 2 NA
3 1 3 NA
4 2 1 NA
5 2 2 0.4
6 2 3 NA
您想要左连接
dplyr
library(dplyr)
df.A %>% left_join(df.B, by = c("X1","X2"))
data.table
library(data.table)
merge(setDT(df.A), setDT(df.B), all.x = TRUE, by = c("X1","X2"))