Использование 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)

Ответы на вопрос(2)

Ваш ответ на вопрос