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

如何在R中基于2015年犯罪率为俄罗斯区域地图着色?含名称匹配问题

解决GADM地图数据与俄联邦统计局犯罪率数据的名称匹配问题

这确实是地理数据可视化里非常常见的坑——不同数据源的行政区划名称总有各种差异:比如俄文/英文翻译变体、官方简称vs全称、甚至近年行政区划调整导致的名称变化。下面给你一套实操性强的解决流程:

1. 先明确两边的名称差异类型

首先你得把两边的名称都列出来,搞清楚到底是哪类不匹配:

  • 查看GADM数据里的区域名称(注意GADM的俄罗斯数据通常有俄文名称列NAME_1_RU,优先用这个和统计局的俄文名称匹配):
# 查看GADM的区域名称(俄文+英文)
head(data@data[, c("NAME_1", "NAME_1_RU")])
# 列出所有GADM区域名称
unique(data@data$NAME_1_RU)
  • 查看你从Word文档提取的犯罪率数据里的区域名称:
# 假设你的犯罪率数据框叫crime_data,区域名称列是region_name
head(crime_data$region_name)
unique(crime_data$region_name)

对比这两份列表,你就能发现差异:比如是“莫斯科市”vs“莫斯科”,还是英文译名和俄文原名的差异,或者是旧行政区划名称和新名称的区别。

2. 手动构建名称映射表(最可靠的方案)

因为官方统计数据和GADM的名称差异通常没有统一的自动匹配规则,手动映射是最不容易出错的方法:

# 创建一个映射表,左边是GADM里的俄文名称,右边是统计局数据里的对应名称
name_mapping <- data.frame(
  gadm_name = c("Москва", "Санкт-Петербург", "Республика Татарстан"),
  stats_name = c("г. Москва", "г. Санкт-Петербург", "Республика Татарстан"),
  stringsAsFactors = FALSE
)
# 你需要把所有不匹配的区域都补充到这个表里

3. 合并映射表与你的犯罪率数据

先把映射关系关联到犯罪率数据上,这样就能和GADM的ID对应:

# 合并犯罪率数据和映射表
crime_data_mapped <- merge(crime_data, name_mapping, 
                          by.x = "region_name", by.y = "stats_name",
                          all.x = TRUE)

4. 将犯罪率数据关联到GADM地理对象

现在把合并好的数据和GADM的空间数据框关联:

# 合并GADM数据和犯罪率数据
data_with_crime <- merge(data, crime_data_mapped,
                        by.x = "NAME_1_RU", by.y = "gadm_name",
                        all.x = TRUE)

这里all.x = TRUE是为了保留所有GADM的区域,哪怕有些区域没有犯罪率数据(后续可以用NA处理)。

5. 处理特殊情况

如果遇到行政区划合并/拆分的情况(比如某个旧区域被拆分到多个新区域,反之亦然),你需要:

  • 如果是统计数据的区域比GADM大:把GADM的小区域数据聚合到统计数据的大区域
  • 如果是统计数据的区域比GADM小:把统计数据的小区域数据汇总到GADM的大区域
    可以用aggregate()函数或者dplyr的分组聚合来处理。

6. 验证并可视化

最后你可以用plot()或者tmap/ggplot2来验证匹配是否正确:

# 用raster包的plot快速验证
plot(data_with_crime, col = data_with_crime$crime_rate_2015)
# 添加图例
legend("bottomright", legend = quantile(data_with_crime$crime_rate_2015, na.rm = TRUE),
       fill = terrain.colors(4), title = "2015 Crime Rate")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:05:00