【问题标题】:How to add a column from one dataframe to another dataframe when two other columns match [duplicate]当其他两列匹配时,如何将一个数据帧中的一列添加到另一个数据帧[重复]
【发布时间】:2020-06-04 13:27:53
【问题描述】:

我有两个数据集,db1 和 db2,如下所示:

db1
+---------+-------+-------+------+------+-----------------+
|  Authors| IDs   | Title | Year | ISSN | Other columns...|
+---------+-------+-------+------+------+-----------------+
|  Abad J.| 16400 |   1   | 2014 |14589 |                 |
|  Ares K.| 70058 |   2   | 2012 |15874 |                 |
|  Anto E.| 71030 |   3   | 2011 |16999 |                 |
|  A Banul| 57196 |   1   | 2011 |21546 |                 |
|  A Berat| 56372 |   2   | 2011 |12554 |                 |
+---------+-------+-------+------+------+-----------------+

db2
+---------+-------+-------+------+------+-------+---------------------------+
|  Authors| IDs   | Title | Year | ISSN | IF    | Other different columns...|
+---------+-------+-------+------+------+-------+---------------------------+
|  Abad J.| 16400 |   1   | 2013 |14589 |  2,3  |                           |
|  Ares K.| 70058 |   2   | 2012 |15874 |  3,3  |                           |
|  Anto E.| 71030 |   3   | 2011 |14587 |  1,2  |                           |
|  A Banul| 57196 |   1   | 2011 |21546 |  7,8  |                           |
|  A Berat| 56372 |   2   | 2011 |75846 |  4,5  |                           |
+---------+-------+-------+------+------+-------+---------------------------+

基本上,当两列 Year 和 ISSN 具有相同的值时,我想要将来自 db2 的列 IF 添加到 db1。所以我想要实现的是我的示例中的以下输出:

db1
+---------+-------+-------+------+------+-------+----------------+
|  Authors| IDs   | Title | Year | ISSN | IF    |Other columns...|
+---------+-------+-------+------+------+-------+----------------+
|  Abad J.| 16400 |   1   | 2014 |14589 |  NA   |                |
|  Ares K.| 70058 |   2   | 2012 |15874 |  3,3  |                |
|  Anto E.| 71030 |   3   | 2011 |16999 |  NA   |                |
|  A Banul| 57196 |   1   | 2011 |21546 |  7,8  |                |
|  A Berat| 56372 |   2   | 2011 |12554 |  NA   |                |
+---------+-------+-------+------+------+-------+----------------+

我尝试过合并,但由于我也有不同的列,所以我获得了一个非常大的数据集。

我想要的是使用函数匹配但同时应用多个条件。

你猜对了吗?

【问题讨论】:

    标签: r dataframe merge match multiple-columns


    【解决方案1】:
    dplyr::left_join(db1, db2 %>% dplyr::select(Year, ISSN, IF))
    
    

    这应该可以工作,前提是这两个数据框除了您在此处显示的列之外没有其他共同的列。

    【讨论】:

    • 也许,写得更简单:db1 %>% leftjoin(db2 %>% select(Year, ISSN, IF), by = c("Year", "ISSN")))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2022-10-23
    • 2021-04-03
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多