如何在R语言中自动识别数据框中缺失的联合国成员国?
用countrycode包找出缺失的联合国成员国
完全可以借助countrycode包快速自动化查询,它内置了联合国成员国的官方数据,能帮你统一国家名称格式并完成对比,具体步骤如下:
1. 准备工作:加载包与数据
首先安装并加载countrycode(以及辅助数据处理的dplyr),同时还原你的数据框:
# 首次使用先安装包 install.packages("countrycode") install.packages("dplyr") # 加载包 library(countrycode) library(dplyr) # 还原你的数据框 df <- structure(list(country = c("Albania", "Algeria", "Angola", "Antigua and Barbuda", "Argentina", "Armenia", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Brazil", "Brunei", "Bulgaria", "Burkina Faso", "Cambodia", "Canada", "Chile", "Colombia", "Costa Rica", "Cote d'Ivoire", "Croatia", "Cuba", "Czechia", "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Eritrea", "Estonia", "Ethiopia", "Fiji", "Finland", "France", "Gabon", "Georgia", "Germany", "Ghana", "Greece", "Guatemala", "Guinea", "Guyana", "Honduras", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liechtenstein", "Lithuania", "Luxembourg", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Malta", "Mauritania", "Mauritius", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Morocco", "Myanmar", "Namibia", "Nepal", "Netherlands", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "People's Republic of China", "Peru", "Philippines", "Poland", "Portugal", "Qatar", "Romania", "Russia", "Rwanda", "Samoa", "San Marino", "Saudi Arabia", "Senegal", "Serbia", "Singapore", "Slovakia", "Slovenia", "South Africa", "South Korea", "Spain", "Sri Lanka", "Sudan", "Suriname", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "U.K.", "U.S.A.", "Uganda", "Ukraine", "United Arab Emirates", "Uruguay", "Uzbekistan", "Venezuela", "Vietnam", "Yemen", "Zambia", "Zimbabwe")), row.names = c(NA, -152L), class = c("tbl_df", "tbl", "data.frame"))
2. 获取联合国成员国标准列表
从countrycode内置的编码表中提取所有联合国成员国的标准英文名称:
# 筛选联合国成员国并提取标准国名 un_members <- codelist %>% filter(un_member == TRUE) %>% pull(country.name.en)
3. 标准化你的数据中的国家名称
因为你的数据里有缩写(如U.K.、U.S.A.)或旧称(如Macedonia),需要转换成标准格式才能准确匹配:
# 添加标准化后的国家名列 df$country_standard <- countrycode(df$country, origin = "country.name", destination = "country.name.en") # 查看无法匹配的条目(比如Taiwan不是主权国家,会返回NA) df %>% filter(is.na(country_standard))
4. 找出缺失的联合国成员国
用集合差运算对比两个列表,得到你的数据框中缺失的联合国成员国:
# 计算缺失的成员国 missing_un_members <- setdiff(un_members, df$country_standard) # 输出结果 print(missing_un_members)
注意事项
- 名称标准化是关键:
countrycode会自动处理不同写法的国家名(如U.K.转成United Kingdom,Macedonia转成North Macedonia),避免因名称格式差异导致的误判。 - 非主权地区排除:Taiwan不是联合国成员国,转换后会返回NA,不会被纳入对比范围。
内容的提问来源于stack exchange,提问作者anpami
相关产品推荐
相关产品推荐

