Объединить два фрейма данных и If.error в R - PullRequest
0 голосов
/ 24 марта 2020

Я хотел бы выполнить слияние двух фреймов данных, и в случае возникновения NA go вернуться и сгенерировать еще одно слияние, но с другими ключами (оба df).

Я просто делаю простое слияние:

e0 <- merge(x= e0,y= mz[,c("Z","ED","GG","DD")], 
            by.x ="Z",by.y = "Z",all.x=T, all.y = F)

, но ключ e0 имеет некоторый NA, и для завершения информации требуется еще один ключ e0 (A). таким же образом необходимо изменить ключ на mz.

структура e0:

Z   A
34  NA
45  NA
NA  32
NA  28

Так что должна быть возможность выполнять слияние в зависимости от ключа. И результат должен быть таким:

Z   A   ED GG DD
34  NA  AB 13 BN
45  NA  ZF 16 BS
NA  32  CD 21 OR
Na  28  AB 23 CN

Как будто это тип Excel if.error (vlooup, vlooup)

Спасибо ...

1 Ответ

0 голосов
/ 24 марта 2020

Вы упомянули другой ключ для e0, который равен A, но ничего не значит для mz. Давайте предположим, что другой ключ для mz - это ED, вы можете использовать coalesce, чтобы получить значение столбца, отличного от NA, и затем сделать left_join.

library(dplyr)

e0 %>%
  mutate(Z = coalesce(Z, A)) %>%
  left_join(mz %>% 
             select(Z,ED,GG,DD) %>%
              mutate(Z = coalesce(Z, ED)), by = 'Z')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...