【问题标题】:Compare tables add missing rows based on multiple condition比较表根据多个条件添加缺失的行
【发布时间】:2020-06-22 22:27:57
【问题描述】:

我正在寻找一个简单的 R 命令,它将执行以下操作。 我有两个表 A 和 B,每个表有三列 - ID、YEAR、VALUE。我想从表 B 中找出与表 A 具有相同 ID 并且具有不在表 A 中的年份的行。然后我想将这些行添加到 A。

Table A
---------------------
| ID | YEAR | VALUE |
---------------------
|  1 | 2006 |   A   |
--------------------
|  1 | 2007 |   B   |
---------------------
|  1 | 2009 |   D   |
---------------------
|  1 | 2010 |   E   |
---------------------

表 B

---------------------
| ID | YEAR | VALUE |
---------------------
|  1 | 2006 |   A   |
--------------------
|  1 | 2007 |   B   |
---------------------
|  1 | 2008 |   C   |
---------------------
|  1 | 2009 |   D   |
---------------------
|  1 | 2010 |   E   |
---------------------

在输出表中,只有表 B 中的第三行被追加到表 A 中。

我找到了这个解决方案- Compare two table and adding row based on condition 但它没有解决多个条件。

【问题讨论】:

    标签: r join conditional-statements comparison bind


    【解决方案1】:

    我们可以使用anti_join 来获取B 中不存在于A 中的行。

    difft <- dplyr::anti_join(B, A, by = c('ID', 'YEAR'))
    difft
    #  ID YEAR VALUE
    #1  1 2008     C
    

    那么我们可以将rbind这一行改为A

    rbind(B, difft) 
    
    #  ID YEAR VALUE
    #1  1 2006     A
    #2  1 2007     B
    #3  1 2008     C
    #4  1 2009     D
    #5  1 2010     E
    #6  1 2008     C
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 2023-02-08
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      相关资源
      最近更新 更多