当其他两列匹配时如何将一列从一个数据框添加到另一数据框

时间:2020-02-20 09:06:36

标签: r dataframe merge match multiple-columns

我有两个数据集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   |                |
+---------+-------+-------+------+------+-------+----------------+

我尝试了合并,但是由于我也有不同的列,因此我获得了非常大的数据集。

我想要的是使用功能匹配,但同时应用多个条件。

有猜到吗?

1 个答案:

答案 0 :(得分:2)

dplyr::left_join(db1, db2 %>% dplyr::select(Year, ISSN, IF))

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