2016-07-22 6 views
1

Я сам учу R для меня, и в настоящий момент я смотрю на Choropleths в R. Для этого я использую пакеты 'choroplethr' и 'choroplethrAdmin1'.

После построения всех примеров из инструкции этих пакетов я хотел составить карту административных уровней 1 Германии со случайными значениями. Поэтому я попытался использовать команду admin_1choropleth. Функции помощи говорит, что команда нуждается в наборе данных с двумя конкретными столбцами:

  • один называется «регионами», которые включают в себя регионы с одинаковым написанием, поскольку они находятся в «admin1.regions'-наборе предоставляемого пакетом
  • второго, который называется «значение», чтобы соответствовать включая значение в регионы

Например, этот код создает карту Japans населения в km² с использованием набора данных: «df_japan_census», который содержит столбец называется «значения 'и один под названием' region '

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

Итак, для построения примерной карты Германии я просто использовал набор данных admin1.regions (потому что он включает в себя необходимые регионы) и добавил к нему столбец «значение» . Затем я попытался это сделать. Это как код выглядит:

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

Но теперь я получаю эту ошибку:

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

Это мои первые вопросы, на StackOverflow, и я не являюсь ни естественным английским языком или программист, так Надеюсь, вы поймете мою проблему.

Если у вас возникли какие-либо вопросы, не стесняйтесь спрашивать меня.

Бест, Марсель

P.S .: Для того, чтобы сделать его проще для вас, это должно быть все, что вам нужно, чтобы воспроизвести ошибку.

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) 

ответ

1

Причина вы получите эту ошибку из-за дубликатами в колонке region из admin1.regions. Если вы используете unique(admin1.regions$region), вы получите вектор длиной 4358, а набор данных orignal - 4399 (так 41 дубликат).

Как решить эту проблему? Вам нужны только записи, содержащие "germany", поэтому удалите все записи не "gemany".

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

Теперь ваш код должен работать.

PS. cool name

+0

Спасибо, Марсель, у вас тоже хорошее имя. : D Когда я использую данные «admin1.regions1» в последней строке, он отлично работает! Большое вам спасибо! –

Смежные вопросы