分享

转换国家代码的神奇R包!

 阿越就是我 2023-10-12 发布于上海
  Stay hungry, stay foolish!   

不同的数据源使用不同的编码方案来表示国家(例如CoW或ISO)。这带来了两个主要问题:(1)其中一些编码方案不够直观,(2)合并这些数据需要从一个编码方案转换到另一个编码方案,或者从较长的国家名称转换到一个编码方案。

countrycode包可以转换40多个不同的国家编码方案,以及转换600多个不同语言和格式的国家名称。

也许很多国家代码你都没听过,但保不准你以后就需要了呢?所以这个包还是非常实用的,没有花里胡哨的功能,就是转换,值得收藏!

  • 安装

  • 支持的国家代码

  • countrycode

    • 转换国家和代码

    • 添加国旗

    • 不同语言和格式的国家名称转换

    • 自定义转换数据框

  • countryname

安装

# 2选1
install.packages("countrycode")

remotes::install_github('vincentarelbundock/countrycode')

支持的国家代码

library(countrycode)

可以通过运行?codelist查看支持哪些国家编码方式。

countrycode

转换国家和代码

可以转换单个或一组国家名称或编码。

# ISO to Correlates of War
countrycode('DZA', origin = 'iso3c', destination = 'cown'
## [1] 615

# English to ISO
countrycode('China', origin = 'country.name', destination = 'iso3c'
## [1] "CHN"

# 德语 to 阿拉伯语
countrycode(c('Algerien''Albanien'), origin = 'country.name.de', destination = 'un.name.ar'
## [1] "<U+0627><U+0644><U+062C><U+0632><U+0627><U+0626><U+0631>" "<U+0623><U+0644><U+0628><U+0627><U+0646><U+064A><U+0627>"

转换多个也是一样的用法:

cowcodes <- c("ALG""ALB""UKG""CAN""USA")
countrycode(cowcodes, origin = "cowc", destination = "iso3c")
## [1] "DZA" "ALB" "GBR" "CAN" "USA"

添加国旗

还可以把国家名字转换成国旗!但是这个功能经常出问题,因为国旗和设备的编码问题,能不能用看缘分。。比如我就不能用。

library(gt)
library(countrycode)

Countries <- c('Canada''Germany''Thailand''Algeria''Eritrea')
Flags <- countrycode(Countries, 'country.name''unicode.symbol')
dat <- data.frame(Countries, Flags)
gt(dat)
Snipaste_2022-04-24_20-10-39

不同语言和格式的国家名称转换

很多国家有多种不同的叫法,比如England,Britain,America,the united states of America等,都是可以转换的,不过也有一些不能。

由于编码原因,R里面很多语言显示不出来!

countrycode('United States of America', origin = 'country.name', destination = 'cldr.name.en')
## [1] "United States"

countrycode('United States of America', origin = 'country.name', destination = 'cldr.short.en')
## [1] "US"

查看支持哪些国家名称及别名等:

head(cldr_examples)

           Code                    Example
1    cldr.name.af   Franse Suidelike Gebiede
2   cldr.name.agq                         TF
3    cldr.name.ak                         TF
4    cldr.name.am           የፈረንሳይ ደቡባዊ ግዛቶች
5    cldr.name.ar الأقاليم الجنوبية الفرنسية
6 cldr.name.ar_ly الأقاليم الجنوبية الفرنسية

自定义转换数据框

countrycode通过custum_dict参数接受用户提供的字典。这些字典将覆盖内置的国家代码字典。例如,以下是一个用于处理美国州名的正则表达式和缩写的字典。

library(countrycode)
url = "https://raw./vincentarelbundock/countrycode/master/data/custom_dictionaries/us_states.csv"
state_dict = read.csv(url, stringsAsFactors=FALSE)
head(state_dict)
##        state abbreviation    state.regex
## 1    Alabama           AL    .*alabama.*
## 2     Alaska           AK     .*alaska.*
## 3    Arizona           AZ    .*arizona.*
## 4   Arkansas           AR   .*arkansas.*
## 5 California           CA .*california.*
## 6   Colorado           CO   .*colorado.*
countrycode('State of Alabama'
            origin = 'state'
            destination = 'abbreviation'
            custom_dict = state_dict,
            origin_regex = TRUE)
## [1] "AL"

countrycode(c('MI''OH''Bad'), 'abbreviation''state', custom_dict=state_dict)
## [1] "Michigan" "Ohio"     NA

ISOcodes包提供了额外的国家编码,包括ISO15924,ISO639,ISO8859,也可以通过custom_dict参数使用。

# install.packages("ISOcodes")
countrycode('abk''Alpha_3_B''Name', custom_dict = ISOcodes::ISO_639_2)
## [1] "Abkhazian"

countryname

这个函数主要用于把任何语言间的国家名字进行转换,相当于一个字典了。

不支持中文!

x <- c('ジンバブエ''Afeganistãu',  'Barbadas''Sverige''UK''中国')

countryname(x)
## [1] "Zimbabwe" NA         "Barbados" "Sweden"   "UK"       NA

以上就是今天的内容,希望对你有帮助哦!欢迎点赞、在看、关注、转发

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多