【问题标题】:R merge dataframes only where multiple columns overlap [duplicate]R仅在多列重叠的情况下合并数据框[重复]
【发布时间】:2020-08-28 11:58:48
【问题描述】:

我有 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

【问题讨论】:

    标签: r dataframe for-loop merge overlap


    【解决方案1】:

    你想要一个左连接

    dplyr

    library(dplyr)
    df.A %>% left_join(df.B, by = c("X1","X2"))
    

    数据表

    library(data.table)
    merge(setDT(df.A), setDT(df.B), all.x = TRUE, by = c("X1","X2"))
    

    【讨论】:

    • 谢谢!从来不知道你可以合并 2 列
    猜你喜欢
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    相关资源
    最近更新 更多