乱码转换工具(regioncode: 中国跨年份行政编码转换工具)

当代中国行政区划的频繁变迁,给数据科学的研究者使用跨年数据或数据可视化的过程当中带来了诸多不便,受到 Vincent Arel-Bundock countrycode包的启发,清华大学政治学系胡悦副教授团队创建的regioncode包实现了中国各地级市1986-2019年间地区正式名称、常用名称和行政区划代码之间的无缝转换。regioncode0.1.1版本已通过CRAN和Github双平台向全球发布,供需要者免费使用。

本文旨在向各位读者介绍regioncode的功能和使用方法。

/ 安装 /
  • 最新发布版本:install.packages("regioncode").
  • 最新开发版本:remotes::install_github("sammo3182/regioncode").
/ 基本用法 /

我们使用哈佛大学王裕华教授搜集的数据集来介绍regioncode的使用方法。

regioncode包中,我们将行政区划代码命名为code,地区的正式名称为name,它们的常用缩写为sname。当前版本支持任意一对之间的相互转换。为此,用户只需将名称的字符向量或地理编码的数字向量传递到函数中。在当前版本中,该函数可以产生三种类型的地级和省级输出:代码(code)、名称(name)和地区(area,如华北、东北、华南等)。只需在参数中指定他们想要的输出类型convert_to以及输入和输出的相应年份。例如,以下代码将corruption数据中的 2019 地理编码转换为1989 版本:

library(regioncode) data("corruption") # Original 2019 version corruption$prefecture_id ## [1] 370100 321200 310117 420500 451300 431200 350300 511500 469021 420600

# 1999 version regioncode(data_input = corruption$prefecture_id, convert_to = "code", # default set year_from = 2019, year_to = 1989) ## [1] 370100 329001 310227 420500 422700 452200 433000 350300 512500 460025 ## [11] 420600

请注意,如果一个区域最初在例如 1989 年进行了地理编码并包含在新区域中,则在 2019 年,此后将使用新区域地理编码。如果一个大的地方被分成几个区域,那么晚年的代码将按照区域数字地理编码的升序与第一个区域对齐。

通过将输出格式更改为name,可以轻松地将给定年份的代码或地区名称转换为另一年份的地区名称。regioncode自动检测输入格式,因此用户只需指定输出格式(连同输入和输出年份)即可获得所需的内容。在以下示例中,我们将数据集中的地理编码变量转换为地区名称,将名称变量转换为另一年的代码和名称。

# The original name corruption$prefecture ## [1] "济南市" "泰州市" "松江区" "宜昌市" "来宾市" "怀化市" "莆田市" "宜宾市" ## [9] "定安县" "襄阳市"

# Codes to name regioncode(data_input = corruption$prefecture_id, convert_to = "name", year_from = 2019, year_to = 1989) ## [1] "济南市" "泰州市" "松江县" "宜昌市" "宜昌地区" "柳州地区" ## [7] "怀化地区" "莆田市" "宜宾地区" "定安县" "襄樊市"

# Name to codes of the same year regioncode(data_input = corruption$prefecture, convert_to = "code", year_from = 2019, year_to = 2019) ## [1] 370100 321200 310117 420500 451300 431200 350300 511500 469021 420600

# Name to name of a different year regioncode(data_input = corruption$prefecture, convert_to = "name", year_from = 2019, year_to = 1989) ## [1] "济南市" "泰州市" "松江县" "宜昌市" "宜昌地区" "柳州地区" ## [7] "怀化地区" "莆田市" "宜宾地区" "定安县" "襄樊市"/ 进阶应用 /

为进一步帮助用户使用更“杂乱”的数据和多样化的需求,regioncode提供五种特殊转换:不完整数据的转换、直辖市、地理区划和方言区域转换、拼音输出。当前版本还允许在省级转换。

不完整数据的转换

通常,数据代码在记录地理信息时可能会省略行政级别,例如使用“北京”而不是“北京市”。要完成此类数据的转换,需要指定incomplete_name参数。如果输入的数据不完整,用户应将参数设置为“from”;如果他们希望输出名称(when convert_to = "name")不包含“city”或“prefecture”,他们可以将参数设置为“to”(参见下面的示例);如果用户想要为输入和输出名称获得不完整的名称,incomplete_name = "both". 以上所有转换都可以持续数年。

# Full, official names corruption$prefecture ## [1] "济南市" "泰州市" "松江区" "宜昌市" "来宾市" "怀化市" "莆田市" "宜宾市" ## [9] "定安县" "襄阳市"

regioncode(data_input = corruption$prefecture, convert_to = "name", year_from = 2019, year_to = 1989, incomplete_name = "to") ## [1] "济南" "泰州" "松江" "宜昌" "柳州" "来宾" "怀化" "莆田" "宜宾" "定安" ## [11] "襄樊" "襄阳"直辖市

直辖市(“直辖市”)在地理上是城市,但在行政上是省级的。因此,这些直辖市内的地区是县级的。不同的分析以不同的方式对待这些地区:一些与其他县平行的地区,而另一些则将整个自治市视为一个县。要处理后一种情况,请regioncode设置参数zhixiashi。设置参数时TRUE,将直辖市视为整个县,并使用其省级代码作为地理编码。

地理区划和方言区域

由于众多因,中国省级行政单位在地理去上可以分为七个地区,分别是:

华北:北京市、天津市、山西省、河北省、内蒙古自治区

东北:黑龙江省、吉林省、辽宁省

华东:上海市、江苏省、浙江省、安徽省、福建省、台湾省、江西省、山东省

华中:河南省、湖北省、湖南省

华南:广东省、海南省、广西壮族自治区、香港特别行政区、澳门特别行政区

西南:重庆市、四川省、贵州省、云南省、西藏自治区、云南省

西北:陕西省、甘肃省、青海省、宁夏回族自治区、新建维吾尔自治区

乱码转换

regioncode 提供了一种方法“区域”,将区域的代码和名称转换为这样的区域。

regioncode(data_input = corruption$prefecture, year_from = 2019, year_to = 1989, convert_to="area") ## [1] "华东" "华东" "华东" "华中" "华南" "华中" "华东" "西南" "华南" "华中"

中国有多种方言。这些方言可能会被一个省或省的多个县使用。不同省份的州也可能使用相同的方言。

regioncode允许用户获得县所属的语言区域作为输出。用户可以通过将参数设置to_pinyindia_group或来获得两个级别的语言区域,方言组和方言子组dia_sub_group。请注意,中国的语言分布过于复杂,无法在地级进行精确衡量。因此,语言区的输出regioncode至多仅供参考,而不是严格的语言研究。

regioncode(data_input = corruption$prefecture, year_from = 2019, year_to = 1989, to_dialect = "dia_group") ## [1] "冀鲁官话" "江淮官话" "吴语" "西南官话" "西南官话" "湘语" ## [7] "莆仙区" "西南官话" "琼文区" "西南官话"

regioncode(data_input = corruption$prefecture, year_from = 2019, year_to = 1989, to_dialect = "dia_sub_group") ## [1] "沧惠片-1" "石济片-8" "泰如片-1" "太湖片-1" "成渝片-3" "成渝片-9" ## [7] "桂柳片-10" "岑江片-2" "吉溆片-3" "娄邵片-1" "黔北片-3" "长益片-3" ## [13] "莆仙区-4" "灌赤片-10" "府城片-1" "鄂北片-10"汉语拼音

有些数据用汉语拼音而不是汉字来存储地区名称。regioncode可以通过设置to_pinyin = TRUE参数获得拼音输出。该参数可应用于正式名称、不完整名称或地理区划和方言区域的输出。

regioncode(data_input = corruption$prefecture, year_from = 2019, year_to = 1989, convert_to="name", to_pinyin=TRUE ) ## 济南市 泰州市 松江县 宜昌市 ## "ji_nan_shi" "tai_zhou_shi" "song_jiang_xian" "yi_chang_shi" ## 宜昌地区 柳州地区 怀化地区 莆田市 ## "yi_chang_di_qu" "liu_zhou_di_qu" "huai_hua_di_qu" "pu_tian_shi" ## 宜宾地区 定安县 襄樊市 ## "yi_bin_di_qu" "ding_an_xian" "xiang_fan_shi"

regioncode(data_input = corruption$prefecture, year_from = 2019, year_to = 1989, convert_to="name", incomplete_name = "to", to_pinyin=TRUE ) ## 济南 泰州 松江 宜昌 柳州 来宾 ## "ji_nan" "tai_zhou" "song_jiang" "yi_chang" "liu_zhou" "lai_bin" ## 怀化 莆田 宜宾 定安 襄樊 襄阳 ## "huai_hua" "pu_tian" "yi_bin" "ding_an" "xiang_fan" "xiang_yang"

regioncode(data_input = corruption$prefecture, year_from = 2019, year_to = 1989, convert_to="area", to_pinyin=TRUE ) ## 华东 华东 华东 华中 华南 华中 ## "hua_dong" "hua_dong" "hua_dong" "hua_zhong" "hua_nan" "hua_zhong" ## 华东 西南 华南 华中 ## "hua_dong" "xi_nan" "hua_nan" "hua_zhong"省份

regioncode不仅允许在地级市层级对数据进行转换而且还提供在省级转换的功能。通过设置参数province = TRUE,用户可以完成所有省级的代号、名称、区域转换。(注意,在省级层面,语言转换只能是方言组。)而且,由于省份有固定的缩写,当输入是缩写,用户可以设置的convert_to参数abbreTocodeabbreTonameabbreToarea。当他们想要省级缩写输出时,只需设置convert_to = "abbre".

regioncode(data_input = corruption$province_id, convert_to = "codeToabbre", year_from = 2019, year_to = 1989, province = TRUE) ## [1] "鲁" "苏" "沪" "鄂" "桂" "湘" "闽" "蜀" "琼" "鄂"/ 总结 /

由清华大学政治学系胡悦副教授团队开发的regioncode为中国行政区划代码、官方名称、地理区划和方言区域、省份缩写等之间的相互转换提供了一种便捷的方式。本文为用户提供了软件包功能的快速视图和简短的教程。

本软件包的进一步开发正在进行中,之后还会陆续推出县级市转换和更加丰富的功能。欢迎大家使用并提出改进意见(意见和建议可以在软件GitHub主页通过issue方式提出),更欢迎志趣相投的朋友一起加入研发。

撰文:孙宇飞

您可以还会对下面的文章感兴趣

最新评论

  1. 四虎归山
    四虎归山
    发布于:2022-04-27 08:31:26 回复TA
    = 2019, year_to = 2019)## [1] 370100 321200 310117 420500 451300 431200 350300 511500 469021 420600# Name to name of a different yea
  1. 小猪配王子
    小猪配王子
    发布于:2022-04-27 14:23:28 回复TA
    )。只需在参数中指定他们想要的输出类型convert_to以及输入和输出的相应年份。例如,以下代码将corruption数据中的 2019 地理编码转换为1989
  1. 平瑞泽寒
    平瑞泽寒
    发布于:2022-04-27 04:37:19 回复TA
    wow
  1. 罗玛行咏
    罗玛行咏
    发布于:2022-04-27 04:37:19 回复TA
    有智慧的人总是把嘴巴放在心里,而愚昧之人反而把心放在嘴里。

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友