countrycode软件包无法识别“;SOM";索马里as ISO3字符代码-r
我在尝试将ISO3字符代码转换为世界银行代码时得到了一个奇怪的结果。值得注意的是,索马里在ISO3中没有得到承认 索马里ISO3字符代码为“SOM”: 例如:countrycode软件包无法识别“;SOM";索马里as ISO3字符代码-r,r,country-codes,R,Country Codes,我在尝试将ISO3字符代码转换为世界银行代码时得到了一个奇怪的结果。值得注意的是,索马里在ISO3中没有得到承认 索马里ISO3字符代码为“SOM”: 例如: library(countrycode) place <- data.frame("iso3c" = "SOM") place iso3c 1 SOM place$wb <- countrycode(sourcevar = place$iso3c, origin = "iso3c", destination = "
library(countrycode)
place <- data.frame("iso3c" = "SOM")
place
iso3c
1 SOM
place$wb <- countrycode(sourcevar = place$iso3c, origin = "iso3c", destination = "wb")
Warning message:
In countrycode(sourcevar = place$iso3c, origin = "iso3c", destination = "wb") :
Some values were not matched unambiguously: SOM
place
iso3c wb
1 SOM <NA>
但这种行为似乎仍然是错误的。我是遗漏了什么还是这是一个错误?问题是,出于某种原因,世界银行字典中没有关于索马里的任何代码
wb
:
countrycode::codelist[227, c("country.name.en", "iso3c", "wb")]
# country.name.en iso3c wb
# 227 Somalia SOM <NA>
这三个NA
案例
# eu28 wb wb.name
# 227 <NA> <NA> <NA>
与
虽然countrycode::codelist[,“wb_api3c”]也有一些缺失值。这是一个bug。我提交了一份报告 我认为目前最可取的解决方法(直到它被修复)是
place$wb <- countrycode(sourcevar = place$iso3c, origin = "iso3c", destination = "wb", custom_match = c("SOM" = "SOM"))
place$wb这很好,但是为什么wb库没有索马里的代码或wb.name?世界银行数据集当然使用当然使用国家。代码:SOM:;其他数据库也有此国家/地区代码:。这是图书馆里的一个bug吗?@MorrisseyJ,我对此一无所知,但是,例如,在你的第一个链接中,我们通过SO到达索马里,看起来像是wb_api2c
。因此,也许世界银行字典中确实有不同的子类别。也许你可以问一下这个选择背后的原因是什么。
# eu28 wb wb.name
# 227 <NA> <NA> <NA>
grep("wb", colnames(countrycode::codelist))
# [1] 53 54 55 56 57
countrycode::codelist[227, 53:57]
# wb wb_api.name wb_api2c wb_api3c wb.name
# 227 <NA> Somalia SO SOM <NA>
(place$wb <- countrycode(sourcevar = place$iso3c, origin = "iso3c", destination = "wb_api3c"))
# [1] "SOM"
place$wb <- countrycode(sourcevar = place$iso3c, origin = "iso3c", destination = "wb", custom_match = c("SOM" = "SOM"))