Frage

Ich habe so ziemlich überall gesucht und kann die Antwort darauf nicht finden;R entspricht VLOOKUP in Excel.Mit VLOOKUP kann ich in einer Spalte nach einem bestimmten Wert suchen und ihn auf jede Zeile meines Datenrahmens anwenden.

In diesem Fall möchte ich das Land finden, in dem sich eine bestimmte Stadt befindet (aus einer Datenbank) und den Namen des Landes in einer neuen Spalte zurückgeben.

Also habe ich diese Datenbank:

countries <- c("UK", "US", "RUS")
cities <- c("LDN", "NY", "MOSC")
db <- cbind(countries, cities)
db
      countries cities
[1,] "UK"      "LDN" 
[2,] "US"      "NY"  
[3,] "RUS"     "MOSC"

Und möchten das Land finden, in dem sich diese Städte befinden (ersetzen Sie NA), basierend auf der obigen Datenbank:

df
     countries cities
[1,]   NA      "LDN" 
[2,]   NA      "NY"  
[3,]   NA     "MOSC"

Ich habe absolut keine Ahnung, wie ich das auf R machen soll.

War es hilfreich?

Lösung

Sie führen eine beitreten was in R mit der Funktion ausgeführt wird merge

merge(db, df)

Mit dem dplyr paket ermöglicht natürlichere Verben:

library(dplyr)
inner_join(db, df)

oder vielleicht (wenn Sie möchten, dass Nicht-Übereinstimmungen angezeigt werden;sehen ?left_join für weitere Informationen):

left_join(db, df)

Andere Tipps

Hier ist ein anderer Ansatz:

library(qdapTools)
df[, 1] <- df[, 2] %l% db[, 2:1]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top