Сравнение таблиц добавляет отсутствующие строки на основе нескольких условий - PullRequest
0 голосов
/ 11 марта 2020

Я ищу простую команду R, которая сделает следующее. У меня есть две таблицы A и B с тремя столбцами - ID, YEAR, VALUE. Я хочу узнать строки из таблицы B, которые имеют тот же идентификатор, что и таблица A, и имеют годы, которых нет в таблице 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.

Я нашел это решение- Сравните две таблицы и добавьте строку на основе условия но это не относится к нескольким условиям.

1 Ответ

0 голосов
/ 25 апреля 2020

Мы можем использовать 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
...