1

我正在自学 R,目前我正在查看 R 中的 Choropleths。为此,我正在使用包“choroplethr”和“choroplethrAdmin1”。

在绘制了这些软件包说明中的所有示例之后,我想绘制一张带有随机值的德国行政 1 级别的地图。所以我尝试使用该admin_1choropleth命令。帮助函数表示该命令需要一个包含两个特定列的数据集:

  • 一个称为“区域”的区域,其中包括与软件包提供的“admin1.regions”数据集中拼写相同的区域
  • 第二个称为“值”,以将包含的值与区域匹配

例如,此代码使用数据集生成每平方公里日本人口的地图:“df_japan_census”,其中包含一个名为“value”的列和一个名为“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)

但现在我收到了这个错误:

错误:anyDuplicated(self$user.df$region) == 0 不是 TRUE

这是我在 stackoverflow 上的第一个问题,我既不是天生会说英语的人,也不是程序员,所以我希望你能理解我的问题。

如果您有任何问题,请随时问我。

最好的,马塞尔

PS:为了让您更轻松,这应该是重现错误所需的全部内容。

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)
4

1 回答 1

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。名字真酷

于 2016-07-22T13:57:36.620 回答