У меня есть два кадра данных. Один (df1
) содержит все столбцы и строки, представляющие интерес, но содержит отсутствующие наблюдения. Другой (df2
) включает значения, которые будут использоваться вместо отсутствующих наблюдений, и включает только столбцы и строки, для которых по меньшей мере один NA
присутствует в df1
. Я хотел бы как-то объединить два набора данных, чтобы получить desired.result
.слияние кадров данных для устранения отсутствующих наблюдений
Это кажется очень простой проблемой для решения, но я рисую пробел. Я не могу получить merge
для работы. Возможно, я мог писать вложенные for-loops
, но пока этого не сделал. Я также попробовал aggregate
несколько раз. Я немного боюсь поставить этот вопрос, опасаясь, что моя карта R
может быть отозвана. Извините, если это дубликат. Я искал здесь и с Google довольно интенсивно. Спасибо за любой совет. Предпочтительным является решение в основании R
.
df1 = read.table(text = "
county year1 year2 year3
aa 10 20 30
bb 1 NA 3
cc 5 10 NA
dd 100 NA 200
", sep = "", header = TRUE)
df2 = read.table(text = "
county year2 year3
bb 2 NA
cc NA 15
dd 150 NA
", sep = "", header = TRUE)
desired.result = read.table(text = "
county year1 year2 year3
aa 10 20 30
bb 1 2 3
cc 5 10 15
dd 100 150 200
", sep = "", header = TRUE)
'FUN = Фильтр, е = Отрицание (is.na)' будет другой вариант для функции (будет держать дубликаты, которые не должны произойти в любом случае, если спецификация OP правильно) – mnel
О, это круто. Отлично сработано. – Aaron
Отлично - яркий пример того, как в базе R есть много действительно опрятных и легко интерпретируемых функций, которые часто игнорируются. – thelatemail