Страницы

Поиск по вопросам

вторник, 4 июня 2019 г.

Подшить к 1му массиву непропущенные значения со 2го в R

Основной массив
df1 <- data.frame(id = c(1,2,3,4,5), dig = c(2,3,NA,5,NA), let = c("a",NA,"c","g",NA))
id dig let 1 1 2 a 2 2 3 3 3 NA c 4 4 5 g 5 5 NA
Массив с новыми значениями
df2 <- data.frame(id = c(2,3,5), dig = c(NA,100,200), let = c("letter1",NA,"letter2"))
id dig let 1 2 NA letter1 2 3 100 3 5 200 letter2
Нужно по id подшить непустые значения из df2. То есть, результат должен выглядеть так:
id dig let 1 1 2 a 2 2 3 letter1 3 3 100 c 4 4 5 g 5 5 200 letter2


Ответ

repl <- which(is.na(df1[1:3, ]), arr.ind=T) df1[repl] <- df2[repl]
Главное - размерности таблиц (исходной и со значениями на замену) должны совпадать, тут я вручную укоротил df1. UPD Более универсальный вариант от автора вопроса:
repl <- which(is.na(df1[df1$id %in% df2$id, ]), arr.ind=T) df1[df1$id %in% df2$id, ][repl] <- df2[repl]

Комментариев нет:

Отправить комментарий