Usando R para inserir um valor para dados perdidos com um valor de outro quadro de dados
Todos,
Eu tenho uma pergunta que temo ser muito pedestre para perguntar aqui, mas procurá-la em outro lugar está me levando ao erro. Eu posso não estar usando os termos de pesquisa corretos.
Eu tenho um quadro de dados do painel (ano-país) em R com alguns valores ausentes em uma determinada variável. Eu estou tentando imputar eles com o valor de outro vetor em outro quadro de dados. Aqui está uma ilustração do que estou tentando fazer.
AssumirData
é o quadro de dados de interesse, que possui valores ausentes em um determinado vetor que estou tentando imputar de outro quadro de dados do doador. Se parece com isso.
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
Este seria oDonor
quadro, que tem um valor paracountry == 80
country x
70 9.234
80 1.523
90 7.562
Eu estou tentando encontrar uma maneira perfeita para automatizar isso, além de um comando deData$x[Data$country == 80] <- 1.523
. Há muitos países com falta dex
.
Pode valer a pena esclarecer que um simplesmerge
seria o mais fácil, mas não necessariamente apropriado para o que estou tentando fazer. Alguns países verão variações nosx
em diferentes anos. Basicamente, o que estou tentando realizar é um comando que diz que se o valor dex
está faltandoData
para todos os anos para um determinado país, tomar o valor correspondente para o país doDonor
dados e cole-os em todos os anos do país como uma espécie de "melhor palpite".
Obrigado por qualquer entrada. Eu suspeito que essa seja uma pergunta novata, mas eu não sabia os termos certos para procurar por ela.
O código reproduzível para os dados acima segue.
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)