R语言countrycode包转换国家名字和代码


本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。


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

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

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

安装

# 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.githubusercontent.com/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

本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值