2016-07-22 3 views
1

Ich unterrichte mich selbst und im Moment schaue ich mir Choropleths in R an. Dafür benutze ich die Pakete "Choroplethr" und "ChoroplethrAdmin1".

Nachdem ich alle Beispiele aus der Anleitung dieser Pakete gezeichnet habe, wollte ich eine Karte von Deutschlands administrativen 1 Ebenen mit zufälligen Werten zeichnen. Also habe ich versucht, den admin_1choropleth Befehl zu verwenden. Die Hilfefunktionen sagen, dass der Befehl einen Datensatz mit zwei spezifischen Spalten benötigt:

  • ein ‚Region‘ genannt, die Regionen mit der gleichen Schreibweise enthält, wie sie in dem ‚admin1.regions'-Daten-Set zur Verfügung gestellt von dem Paket sind
  • eine zweite, der ‚Wert‘ entsprechen, die einschließlich der Werte für die Regionen

zum Beispiel dieser Code eine Karte von Japans Population produziert pro km² unter Verwendung des Datensatzes genannt wird: ‚df_japan_census‘, die eine Spalte enthält, genannt ‚-Wert und eine Region genannt

admin1_choropleth("japan", 
       df_japan_census, 
       "Japan Population", 
       "per km²") 

Also zum Plotten einer Beispielkarte von Deutschland habe ich einfach den 'admin1.regions'-Datensatz (weil er die benötigten Regionen enthält) hinzugefügt und eine Spalte' value ' hinzugefügt. Dann habe ich versucht, es zu plotten. Dies ist, wie der Code sucht:

admin1.regions$value<-3:4401 #the numbers are just placeholders 
admin1_choropleth("germany",admin1.regions) 

Aber jetzt habe ich diese Störung erhalte:

Error: anyDuplicated(self$user.df$region) == 0 is not TRUE

Dies ist meine ersten Fragen auf Stackoverflow und ich bin weder ein natürlicher englischer Sprecher oder ein Programmierer, so Ich hoffe, du kannst mein Problem verstehen.

Wenn Sie irgendwelche Fragen haben, zögern Sie nicht, mich zu fragen.

Best, Marcel

P. S .: Um es einfacher für Sie, das alles, was Sie brauchen, sollte den Fehler zu reproduzieren.

install.packages("choroplethr") 
library(choroplethr) 
install.packages("choroplethrAdmin1") 
install.packages("ggplot2") 
library(choroplethrAdmin1) 
library(ggplot2) 

admin1.regions$value<-3:4401 
admin1_choropleth("germany",admin1.regions) 

Antwort

1

Der Grund, warum Sie erhalten diese Fehler zu Duplikaten in der Spalte region von admin1.regions zurückzuführen sind. Wenn Sie unique(admin1.regions$region) verwenden, erhalten Sie einen Vektor der Länge 4358, während der ursprüngliche Datensatz 4399 ist (also 41 Duplikate).

Wie wird dieses Problem gelöst? Sie benötigen nur die Einträge, die "germany" enthalten, also entfernen Sie alle nicht "gemany" Einträge.

admin1.regions$value<-3:4401 #the numbers are just placeholders 
admin1.regions1 <- admin1.regions[which(admin1.regions$country == "germany"),] 
admin1_choropleth("germany",admin1.regions) 

Jetzt sollte Ihr Code funktionieren.

PS. cooler Name

+0

Danke Marcel, du hast auch einen schönen Namen. : D Wenn ich die Daten von 'admin1.regions1' in der letzten Zeile verwende, funktioniert es perfekt! Vielen Dank! –

Verwandte Themen