【问题标题】:How to merge 2 df by 2 non-unique columns [duplicate]如何通过 2 个非唯一列合并 2 个 df [重复]
【发布时间】:2020-05-21 06:49:17
【问题描述】:

我有 2 个数据框:

df1=data.frame(col1=c('A', 'A', 'B', 'B', 'B'), 
               col2a=c(1, 4, 3, 2, 5))
df2=data.frame(col1=c('A', 'A', 'A', 'B', 'B'), 
               col2b=c('a', 'd', 'c', 'b', 'e'))

我想要这样的结果 df:

df3=data.frame(col1=c('A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'),
               col2b=c('a', 'a', 'd', 'd', 'c', 'c', 'b', 'b', 'b', 'e', 'e', 'e'),
               col2a=c(1, 4, 1, 4, 1, 4, 3, 2, 5, 3, 2, 5))

我尝试通过 col1 列对 df1 和 df2 使用 merge() 但它不起作用,因为 col1 是非唯一列。谁能帮我解决这个问题?

【问题讨论】:

  • 您想要完全加入吗? merge(df1, df2, by = 'col1', all = TRUE)
  • @Hunaidkhan:对不起,我已经编辑过了
  • @RonakShah 我不能这样做,因为 col1 是一个非唯一的列。我收到一个错误,提示“由多个实际参数匹配的形式参数“y””。
  • 我没有收到您共享的数据的错误。
  • @RonakShah 非常感谢你,我已经可以用你的解决方案了 :)

标签: r dataframe join merge dplyr


【解决方案1】:

一个dplyr解决方案是

dplyr::full_join(df1, df2)

输出

#    col1 col2a col2b
# 1     A     1     a
# 2     A     1     d
# 3     A     1     c
# 4     A     4     a
# 5     A     4     d
# 6     A     4     c
# 7     B     3     b
# 8     B     3     e
# 9     B     2     b
# 10    B     2     e
# 11    B     5     b
# 12    B     5     e

在基础 R 中,要获得相同的输出,您可以使用

merge(df1, df2)

【讨论】:

    猜你喜欢
    • 2023-02-26
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多