countrycode
имеет встроенные испанские названия стран, но по умолчанию он недоступен в качестве исходного кода. Вы можете обойти это, создав и используя собственный словарь, как в примере ниже. Недостатком является то, что он не будет совпадать с регулярным выражением, поэтому имена должны точно совпадать (включая регистр символов). Если вы можете и хотите создать набор регулярных выражений для названий испанских стран, мы были бы очень рады и благодарны за их интеграцию в countrycode
в качестве доступного по умолчанию кода источника (отправка возможна здесь https://github.com/vincentarelbundock/countrycode).
library(countrycode)
custom_dict <- data.frame(spanish = countrycode::codelist$cldr.name.es,
english = countrycode::codelist$cldr.name.en,
stringsAsFactors = FALSE)
countries <- c("España", "Alemania")
countrycode(countries, "spanish", "english", custom_dict = custom_dict)
# [1] "Spain" "Germany"
Это соответствует 92% названий стран в данных, которые вы используете, что, по крайней мере, хорошее начало. Вы можете добавить записи для названий стран, которые не соответствуют, в пользовательский словарь, чтобы соответствовать всем им.
library(countrycode)
url <- "https://catalogo.datos.gba.gob.ar/dataset/46b85203-17fe-42bd-b13f-1d3e150c06cd/resource/3eb20f55-7dc0-4671-a039-cf2e4b71c3db/download/expo_2016_2017.xlsx-expo.csv"
data <- read.csv(url, stringsAsFactors = FALSE)
custom_dict <- data.frame(spanish = countrycode::codelist$cldr.name.es,
english = countrycode::codelist$cldr.name.en,
stringsAsFactors = FALSE)
results <- countrycode(data$pais_descripcion, "spanish", "english", custom_dict = custom_dict)
sum(is.na(results))
# [1] 3902
sum(!is.na(results))
# [1] 45060