Заменить значения NA в одном кадре данных значениями из второго - PullRequest
3 голосов
/ 21 апреля 2020

У меня есть два кадра данных, которые выглядят так:

df1:

     A    B    C    D   E   F.              EMAIL
1   78   46   65   59  NA  NA. bill@microsoft.com
2   60   51   64   67  NA  NA. bill@microsoft.com
3   72   83   54   72  NA  NA. bill@microsoft.com

df2:

     A    B    C    D   E   F.              EMAIL
1   NA   NA   NA   NA  71  99. bill@microsoft.com
2   NA   NA   NA   NA  53  74. bill@microsoft.com

, что я хочу получить в итоге: df3

     A    B    C    D   E   F               EMAIL
1   78   46   65   59  71  99. bill@microsoft.com
2   60   51   64   67  53  74. bill@microsoft.com
3   72   83   54   72  NA  NA. bill@microsoft.com

Я попытался объединить, объединить, объединить, rqdatable все безуспешно. Я новичок в R и у меня заканчиваются идеи о том, как это сделать. Как я могу заменить значения одного кадра данных значениями из второго?

Спасибо! -g

Ответы [ 2 ]

4 голосов
/ 21 апреля 2020
i <- seq(nrow(df2))

df1[i,] <- Map(function(x, y) ifelse(is.na(x), y, x),
               df1[i,], df2)

df1
#    A  B  C  D  E  F
# 1 78 46 65 59 71 99
# 2 60 51 64 67 53 74
# 3 72 83 54 72 NA NA
1 голос
/ 21 апреля 2020

Мы можем использовать data.table методы

library(data.table)
nm1 <- c('A', 'B', 'C', 'D', 'E', 'F')
setDT(df1)[, (nm1) := Map(fcoalesce, .SD, df2[nm1]), .SDcols = nm1] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...