Użycie R do wstawienia wartości dla brakujących danych z wartością z innej ramki danych
Wszystko,
Mam pytanie, które, jak się obawiam, może być zbyt trudne do spytania, ale szukanie go gdzie indziej prowadzi mnie na manowce. Być może nie korzystam z odpowiednich haseł wyszukiwania.
Mam ramkę danych panelu (kraj-rok) w R z pewnymi brakującymi wartościami w danej zmiennej. Próbuję przypisać im wartość z innego wektora w innej ramce danych. Oto ilustracja tego, co próbuję zrobić.
ZałożyćData
jest interesującą ramką danych, która ma brakujące wartości w danym wektorze, które próbuję przypisać z innej ramki danych dawcy. To wygląda tak.
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
To byłobyDonor
ramka, która ma wartośćcountry == 80
country x
70 9.234
80 1.523
90 7.562
Próbuję znaleźć płynny sposób na zautomatyzowanie tego, poza poleceniemData$x[Data$country == 80] <- 1.523
. Istnieje wiele krajów, w których brakujex
.
Warto wyjaśnić, że to prostemerge
byłby najłatwiejszy, ale niekoniecznie odpowiedni do tego, co próbuję zrobić. Niektóre kraje zobaczą zmianyx
w różnych latach. Zasadniczo to, co próbuję osiągnąć, to polecenie, które mówi, że jeśli wartośćx
brakujeData
przez wszystkie lata dla danego kraju, weź odpowiednią wartość dla kraju zDonor
dane i wklej je przez wszystkie lata w kraju jako „najlepsze odgadnięcie”.
Dzięki za każde wejście. Podejrzewam, że jest to pytanie debiutanta, ale nie znałem odpowiednich terminów, aby go znaleźć.
Powtarzalny kod powyższych danych.
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)