You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言解决国家名称命名不匹配问题实现ggplot世界地图正确着色

国家名匹配问题解决方案

你提到的countrycode包完全可以解决这个问题,它内置了全球各国的多种命名规范、别名、官方编码的映射关系,不需要自行收集国家别名数据。核心思路是将所有数据源的国家名称统一转换为唯一标准化编码(如ISO 3位编码iso3c)后再做匹配,完全避开不同数据源国家名写法不统一的问题。


修正后的可运行代码

library(ggplot2)
library(countrycode)
library(dplyr)

# 加载世界地图数据
worldmap_AMIS_Market <- map_data("world")
# 目标国家向量
vec_AMIS_Market <- c("Canada", "China","United States of America", "Republic of Korea", "Russian Federation")

# 1. 给地图数据新增标准iso3编码列,自动识别各种国家名写法
worldmap_AMIS_Market <- worldmap_AMIS_Market %>%
  mutate(
    iso3 = countrycode(region, origin = "country.name", destination = "iso3c", warn = FALSE)
  )

# 2. 把目标国家向量也转成iso3编码
target_iso3 <- countrycode(vec_AMIS_Market, origin = "country.name", destination = "iso3c")

# 3. 用标准编码匹配设置填充色
worldmap_AMIS_Market <- worldmap_AMIS_Market %>%
  mutate(fill = ifelse(iso3 %in% target_iso3, "green", "lightgrey"))

# 绘图
ggplot(worldmap_AMIS_Market, aes(long, lat, fill = fill, group=group)) + 
  geom_polygon(colour="gray") + 
  ggtitle("Availability of AMIS Supply and Demand Data - Monthly") +
  scale_fill_identity()

方案说明

  • countrycode的origin = "country.name"参数支持自动识别绝大多数主流国家名写法:包括缩写(如USA、UK)、全称(如United States of America)、不同译名、常用别名,无需手动处理映射。
  • 后续处理50份不同数据集时,只需要把所有数据集的国家字段都转换为同一种标准编码(如iso3c),用编码做关联匹配即可,无需逐一修正国家名写法。
  • 如果遇到极个别偏门别名无法识别的情况,可以通过custom_match参数传入自定义的小字典补全匹配规则。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:45:01