Ошибка: anyDuplicated(self$user.df$region) == 0 НЕ ИСТИНА

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

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

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

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

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)

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

Ошибка: anyDuplicated(self$user.df$region) == 0 НЕ ИСТИНА

Это мои первые вопросы о 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)

person Marcel_G    schedule 22.07.2016    source источник


Ответы (1)


Причина, по которой вы получаете эту ошибку, связана с дубликатами в столбце region из admin1.regions. Если вы используете unique(admin1.regions$region), вы получите вектор длиной 4358, в то время как исходный набор данных равен 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. клевое имя

person StatMan    schedule 22.07.2016
comment
Спасибо, Марсель, у тебя тоже красивое имя. :D Когда я использую данные 'admin1.regions1' в последней строке, все отлично работает! Большое спасибо! - person Marcel_G; 23.07.2016