Как объединить два фрейма данных на основе отсутствующих критериев с помощью dplyr? - PullRequest
3 голосов
/ 09 июля 2020

У меня есть такой фрейм данных

varA  varB  varC
  AA    45      
        32    D3
  DF          G5

И еще один вроде этого:

varA  varB  varC
        45    F3
  BB          D3
  DF    22    

Как я могу объединить эти фреймы данных, чтобы все было объединено в один?

varA  varB  varC
  AA    45    F3
  BB    32    D3
  DF    22    G5

Ответы [ 2 ]

4 голосов
/ 09 июля 2020

Если оба набора данных имеют одинаковое количество строк и NA для пропущенных значений, используйте coalesce с map2

library(dplyr)
library(purrr)
map2_dfc(df1, df2, coalesce)
# A tibble: 3 x 3
#  varA   varB varC 
#  <chr> <dbl> <chr>
#1 AA       45 F3   
#2 BB       32 D3   
#3 DF       22 G5   

data

df1 <- structure(list(varA = c("AA", NA, "DF"), varB = c(45, 32, NA), 
    varC = c(NA, "D3", "G5")), class = "data.frame", row.names = c(NA, 
-3L))

df2 <- structure(list(varA = c(NA, "BB", "DF"), varB = c(45, NA, 22), 
    varC = c("F3", "D3", "G5")), class = "data.frame", row.names = c(NA, 
-3L))
3 голосов
/ 09 июля 2020

Предполагая, что кадры данных - это A и B, убедитесь, что отсутствуют значения NA -

A[is.na(A)] <- B[is.na(A)]
...