【问题标题】:How can I merge two dataframes if two cols have to be the same? [duplicate]如果两列必须相同,如何合并两个数据框? [复制]
【发布时间】:2016-05-28 14:35:44
【问题描述】:

我有两个数据框。例如df1 看起来像:

Name Month Number       
1.H  1      8
2.H  2      7  
3.H  3      6 
4.A  1      9
5.A  2      10
6.A  3      11

df2 看起来像:

Name Month index      
1.H    1      3
2.H    2      2  
3.H    3      1
4.A    1      3 
5.A    2      5
6.A    3      9

我想把它合并到下面的df:

  Name Month Number index
  1.H  1    8       3
  2.H  2    7       2
  3.H  3    6       1
  4.A  1    9       3
  5.A  2    10      5
  6.A  3    11      9

如何将两个 df 合并到这个 df

我已经尝试过 merge 函数 by.xby.y 但它只允许合并一列,但我也想要第二列。

【问题讨论】:

  • 试试merge(df1, df2)
  • 谁告诉你by.xby.y 只允许合并一列?那是在哪里写的?文档没有这么说。您是否尝试过分几列?

标签: r dataframe merge


【解决方案1】:

您一次可以合并多个列:

merge(df1, df2, by = c('Name', 'Month'))

其实这应该是默认值,因为by的默认值是intersect(names(df1), names(df2))

【讨论】:

    【解决方案2】:

    有很多不同的方法可以做到这一点。其他两个答案提供了基本的方法。这里还有另外两种使用包的方法。

    您也可以使用sqldf 包:

    sqldf("select a.*, b.index from df1 as a join df2 as b on a.name = b.name and a.month = b.month")
    

    您可以使用dplyr 包:

    inner_join(df1, df2, by = c("name", "month"))
    

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 2017-12-27
      • 2011-10-06
      • 2022-11-13
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多