更正国家名称以使其匹配不同的命名约定
Correcting country names to make them match a different naming convention
我想用ggplot制作一张世界地图如下:
library(ggplot2)
library(countrycodes)
library(dplyr)
library(tidyverse)
worldmap_AMIS_Market <- map_data("world")
# Set colors
vec_AMIS_Market <- c("Canada", "China","United States of America", "Republic of Korea", "Russian Federation")
worldmap_AMIS_Market <- mutate(worldmap, fill = ifelse(region %in% vec_AMIS_Market, "green", "lightgrey"))
# Use scale_fiil_identity to set correct colors
ggplot(worldmap_AMIS_Market, aes(long, lat, fill = fill, group=group)) +
geom_polygon(colour="gray") + ggtitle("Map of World") +
ggtitle("Availability of AMIS Supply and Demand Data - Monthly") +
scale_fill_identity()
正如你所见,美国并没有亮起绿色,因为在worldmap_AMIS_Market
数据中,美国写成USA
,而矢量使用United States of America
。俄罗斯和韩国也是如此。由于我将对大约 50 个不同的数据集执行此过程,因此我宁愿不手动更正所有不匹配的国家/地区。
有什么办法可以解决这样的问题吗?我有几个想法,但没有实际的解决方案:
- 我可以进行模糊匹配,但这不适用于美国 -> 美国。
- 我知道包
countrycodes
可以将国家/地区转换为 iso 代码等,但我认为它没有更正国家/地区名称的选项 (https://github.com/vincentarelbundock/countrycode)。
- 我可以以某种方式收集所有国家/地区的所有替代命名约定,然后对其进行模糊匹配。但我不知道从哪里获得替代名称,而且我不确定我是否能够再为这种情况编写模糊代码。
有人可以帮我解决这个问题吗?
一个选项是 countrycode::countryname
转换国家/地区名称。
注意:countrycode::countryname
会发出警告,因此它可能不会在所有情况下都有效。但至少对我来说,它失败的案例是相当奇特的小国家或岛屿。
library(ggplot2)
library(countrycode)
library(dplyr)
library(tidyverse)
worldmap <- map_data("world")
# Set colors
vec_AMIS_Market <- c("Canada", "China","United States of America", "Republic of Korea", "Russian Federation")
worldmap_AMIS_Market <- mutate(worldmap, region = countryname(region), fill = ifelse(region %in% countryname(vec_AMIS_Market), "green", "lightgrey"))
#> Warning in countrycode_convert(sourcevar = sourcevar, origin = origin, destination = dest, : Some values were not matched unambiguously: Ascension Island, Azores, Barbuda, Canary Islands, Chagos Archipelago, Grenadines, Heard Island, Madeira Islands, Micronesia, Saba, Saint Martin, Siachen Glacier, Sint Eustatius, Virgin Islands
# Use scale_fiil_identity to set correct colors
ggplot(worldmap_AMIS_Market, aes(long, lat, fill = fill, group=group)) +
geom_polygon(colour="gray") + ggtitle("Map of World") +
ggtitle("Availability of AMIS Supply and Demand Data - Monthly") +
scale_fill_identity()
我想用ggplot制作一张世界地图如下:
library(ggplot2)
library(countrycodes)
library(dplyr)
library(tidyverse)
worldmap_AMIS_Market <- map_data("world")
# Set colors
vec_AMIS_Market <- c("Canada", "China","United States of America", "Republic of Korea", "Russian Federation")
worldmap_AMIS_Market <- mutate(worldmap, fill = ifelse(region %in% vec_AMIS_Market, "green", "lightgrey"))
# Use scale_fiil_identity to set correct colors
ggplot(worldmap_AMIS_Market, aes(long, lat, fill = fill, group=group)) +
geom_polygon(colour="gray") + ggtitle("Map of World") +
ggtitle("Availability of AMIS Supply and Demand Data - Monthly") +
scale_fill_identity()
正如你所见,美国并没有亮起绿色,因为在worldmap_AMIS_Market
数据中,美国写成USA
,而矢量使用United States of America
。俄罗斯和韩国也是如此。由于我将对大约 50 个不同的数据集执行此过程,因此我宁愿不手动更正所有不匹配的国家/地区。
有什么办法可以解决这样的问题吗?我有几个想法,但没有实际的解决方案:
- 我可以进行模糊匹配,但这不适用于美国 -> 美国。
- 我知道包
countrycodes
可以将国家/地区转换为 iso 代码等,但我认为它没有更正国家/地区名称的选项 (https://github.com/vincentarelbundock/countrycode)。 - 我可以以某种方式收集所有国家/地区的所有替代命名约定,然后对其进行模糊匹配。但我不知道从哪里获得替代名称,而且我不确定我是否能够再为这种情况编写模糊代码。
有人可以帮我解决这个问题吗?
一个选项是 countrycode::countryname
转换国家/地区名称。
注意:countrycode::countryname
会发出警告,因此它可能不会在所有情况下都有效。但至少对我来说,它失败的案例是相当奇特的小国家或岛屿。
library(ggplot2)
library(countrycode)
library(dplyr)
library(tidyverse)
worldmap <- map_data("world")
# Set colors
vec_AMIS_Market <- c("Canada", "China","United States of America", "Republic of Korea", "Russian Federation")
worldmap_AMIS_Market <- mutate(worldmap, region = countryname(region), fill = ifelse(region %in% countryname(vec_AMIS_Market), "green", "lightgrey"))
#> Warning in countrycode_convert(sourcevar = sourcevar, origin = origin, destination = dest, : Some values were not matched unambiguously: Ascension Island, Azores, Barbuda, Canary Islands, Chagos Archipelago, Grenadines, Heard Island, Madeira Islands, Micronesia, Saba, Saint Martin, Siachen Glacier, Sint Eustatius, Virgin Islands
# Use scale_fiil_identity to set correct colors
ggplot(worldmap_AMIS_Market, aes(long, lat, fill = fill, group=group)) +
geom_polygon(colour="gray") + ggtitle("Map of World") +
ggtitle("Availability of AMIS Supply and Demand Data - Monthly") +
scale_fill_identity()