I am self-teaching R to me and at the moment I am having a look on Choropleths in R. For this I am using the packages 'choroplethr' and 'choroplethrAdmin1'.
After plotting all the examples from the instruction of these packages I wanted to plot a map of Germany's administrative 1 levels with random values. So I tried to to use the admin_1choropleth
command. The help functions says that the command needs a dataset with two specific columns:
For example this code produces a map of Japans Population per km² using the dataset:'df_japan_census' which contains a column called 'value' and one called 'region'
admin1_choropleth("japan",
df_japan_census,
"Japan Population",
"per km²")
So for plotting an example map of Germany I just used the 'admin1.regions'-dataset (because it includes the regions needed) and added a column 'value' to it. Then I tried to plot it. This is how the code is looking:
admin1.regions$value<-3:4401 #the numbers are just placeholders
admin1_choropleth("germany",admin1.regions)
But now I am getting this Error:
Error: anyDuplicated(self$user.df$region) == 0 is not TRUE
This is my first questions on stackoverflow and I am neither a natural English speaker or a programmer, so I hope you can understand my problem.
If you are having any questions do not hesitate to ask me.
Best, Marcel
P.S.: To make it easier for you, this should be all you need to reproduce the Error.
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)
The reason you get this error is due to duplicates in column region
of admin1.regions
. If you use unique(admin1.regions$region)
you will get a vector of length 4358, while the orignal dataset is 4399 (so 41 duplicates).
How to tackle this problem? You only need the entries containing "germany"
, so remove all the non-"gemany"
entries.
admin1.regions$value<-3:4401 #the numbers are just placeholders
admin1.regions1 <- admin1.regions[which(admin1.regions$country == "germany"),]
admin1_choropleth("germany",admin1.regions)
Now your code should work.
PS. cool name