Ich habe zwei Datenrahmen von Länderdaten. df1
hat alle Länder der Welt. df2
hat eine Untergruppe von Ländern, hat aber die Populationen in einer seiner Spalten. Ich möchte die Bevölkerungsdaten nehmen und sie zu df1
hinzufügen, wo die Ländernamen übereinstimmen.Binding Datenrahmen mit übereinstimmenden Ländernamen
Wenn df1$Column1 = df2$Column1
(gleiche Ländernamen), dann füllen df1$Column2
(derzeit leer) mit den Informationen aus df2$Column2
(Landesbevölkerung), wo die Reihe die derjenige für die jeweilige Land Übereinstimmung vorhanden ist.
Ich versuchte, die beide mit der Spalte „Namen“ zu verschmelzen, die sie sowohl für die Ländernamen haben:
total <- merge(map,Co2_2x, by="NAME")
die Spalten sind alle da, aber ich leere Zeilen in meinem neuen Datenrahmen erhalten.
Ich würde gerne in der Lage sein zu sagen "für diese Zeile und Spalte Matrixposition in DF1 (das Land), erhalten Sie die Zeile (Ländername übereinstimmen in df2
) und Spalte X (Bevölkerungsdaten). Dann legen Sie es diese Zeilen- und Spaltenposition Y-Matrix in df1
(neue Population Spalte in df1
für den angepassten Ländernamen)“... Es muss einen einfacheren Weg geben :-)
Hier ist mein Code: ich möchte map$measure
füllen mit Daten von Co2_2x$premium
, wo die Länder übereinstimmen.
library(XML)
library(raster)
library(rgdal)
download.file("http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip",destfile="TM_WORLD_BORDERS_SIMPL-0.3.zip")
unzip("TM_WORLD_BORDERS_SIMPL-0.3.zip",exdir=getwd())
polygons <- shapefile("TM_WORLD_BORDERS_SIMPL-0.3.shp")
polygons
map <- as.data.frame(polygons)
map$Measure <- 0
library(rvest)
Co2 <- read_html("https://en.wikipedia.org/wiki/List_of_countries_by_carbon_dioxide_emissions")
Co2_2x<-Co2 %>%
html_nodes("table") %>%
.[[1]] %>%
html_table()
names(Co2_2x)[2]<-paste("premium")
names(Co2_2x)[1]<-paste("NAME")
total <- merge(map,Co2_2x, by="NAME")
Vielen Dank!
Hallo Peter, willkommen in SO. Was haben Sie versucht, Ihr Problem anzugehen? Wir müssen das wissen, um richtige Ratschläge zu geben. – Vincent
Hallo Vincent, ich habe versucht, die beiden zusammenzufassen, indem ich die Spalte "Name" verwende, die beide für Ländernamen haben. total <- merge (map, Co2_2x, by = "NAME") Aber ich bekomme leere Zeilen in meinem neuen Datenrahmen, aber die Spalten sind alle da. –
Ok. Können Sie das bitte in Ihrer Frage und nicht im Kommentar erklären? – Vincent