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)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage