Использование R для вставки значения для отсутствующих данных со значением из другого фрейма данных
Все,
У меня есть вопрос, который, боюсь, может быть слишком пешеходным, чтобы задавать его здесь, но его поиск в другом месте вводит меня в заблуждение. Я не могу использовать правильные условия поиска.
У меня есть кадр данных панели (страна-год) в R с некоторыми пропущенными значениями для данной переменной. Я пытаюсь приписать им значение из другого вектора в другом кадре данных. Вот иллюстрация того, что я пытаюсь сделать.
ПредполагатьData
интересующий фрейм данных, в котором отсутствуют значения для данного вектора, которые я пытаюсь вписать из другого фрейма данных донора. Похоже на это.
country year x
70 1920 9.234
70 1921 9.234
70 1922 9.234
70 1923 9.234
70 1924 9.234
80 1920 NA
80 1921 NA
80 1922 NA
80 1923 NA
80 1924 NA
90 1920 7.562
90 1921 7.562
90 1922 7.562
90 1923 7.562
90 1924 7.562
Это было быDonor
кадр, который имеет значение дляcountry == 80
country x
70 9.234
80 1.523
90 7.562
Я пытаюсь найти простой способ автоматизировать это, помимо командыData$x[Data$country == 80] <- 1.523
, Есть много стран с отсутствием наx
.
Возможно, стоит уточнить, что простойmerge
было бы самым простым, но не обязательно подходящим для того, что я пытаюсь сделать. Некоторые страны увидят изменения вx
в разные годы. По сути, я пытаюсь выполнить команду, которая говорит, что если значениеx
отсутствует изData
за все годы для данной страны возьмите соответствующее значение для страны изDonor
данные и вставьте его за все годы страны, как "лучшая догадка" своего рода.
Спасибо за любой вклад. Я подозреваю, что это вопрос новичка, но я не знал подходящих терминов для его поиска.
Воспроизводимый код для приведенных выше данных приведен ниже.
country <- c(70,70,70,70,70,80,80,80,80,80,90,90,90,90,90)
year <- c(1920,1921,1922,1923,1924,1920,1921,1922,1923,1924,1920,1921,1922,1923,1924)
x <- c(9.234,9.234,9.234,9.234,9.234,NA,NA,NA,NA,NA,7.562,7.562,7.562,7.562,7.562)
Data=data.frame(country=country,year=year,x=x)
summary(Data)
country <- c(70,80,90)
x <- c(9.234,1.523,7.562)
Donor=data.frame(country=country,x=x)
summary(Donor)