Verwenden Sie R, um einen Wert für fehlende Daten mit einem Wert aus einem anderen Datenrahmen einzufügen
Alles,
Ich habe eine Frage, von der ich befürchte, dass sie zu fußgängerisch ist, um sie hier zu stellen, aber die Suche nach einer anderen Stelle führt mich in die Irre. Ich verwende möglicherweise nicht die richtigen Suchbegriffe.
Ich habe einen Panel-Datenrahmen (Land-Jahr) in R mit einigen fehlenden Werten für eine bestimmte Variable. Ich versuche, sie mit dem Wert eines anderen Vektors in einem anderen Datenrahmen zu unterstellen. Hier ist eine Illustration dessen, was ich versuche zu tun.
AnnehmenData
ist der interessierende Datenrahmen, der fehlende Werte für einen bestimmten Vektor enthält, den ich einem anderen Geberdatenrahmen zuzuordnen versuche. Es sieht aus wie das.
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
Das wäre dasDonor
Rahmen, der einen Wert für hatcountry == 80
country x
70 9.234
80 1.523
90 7.562
Ich versuche einen nahtlosen Weg zu finden, um dies zu automatisierenData$x[Data$country == 80] <- 1.523
. Es gibt viele Länder, in denen es noch keine gibtx
.
Es mag klärenswert sein, dass eine einfachemerge
wäre das einfachste, aber nicht unbedingt angemessen für das, was ich versuche zu tun. In einigen Ländern wird es Abweichungen gebenx
in verschiedenen Jahren. Grundsätzlich versuche ich, einen Befehl auszuführen, der besagt, dass wenn der Wert vonx
fehlt inData
Nehmen Sie für alle Jahre eines Landes den entsprechenden Wert für das Land aus demDonor
Daten und fügen Sie es über alle Länderjahre als "beste Vermutung" ein.
Vielen Dank für jede Eingabe. Ich vermute, dass dies eine Anfängerfrage ist, aber ich kannte nicht die richtigen Begriffe, um danach zu suchen.
Es folgt ein reproduzierbarer Code für die obigen Daten.
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)