Перевод названий стран с испанского на английский с помощью translateR - PullRequest
0 голосов
/ 17 января 2019

У меня есть набор данных с названиями стран и экспорта, но названия стран на испанском языке. Я хочу использовать countrycode, чтобы получить правильные коды для отображения, однако countrycode конвертирует только с английского / немецкого на другие языки (не наоборот). Я попытался использовать translateR, чтобы изменить испанские имена на английский, но новый столбец выдает то же самое, что и оригинал.

Я не думаю, что это мой API, потому что изначально я получал другую ошибку для этого, но затем я перезапустил R, и это ушло. Это что-то в коде?

#read in file
data <- read.csv("...", header = TRUE)
data$char <- as.character(data$pais_descripcion)

#translate
library(translateR)

google.dataset.out <- translate(dataset = data,
content.field = 'char',
google.api.key = 'key',
source.lang = 'es',
target.lang = 'en')

Набор данных со странами (pais_descripcion)

1 Ответ

0 голосов
/ 20 января 2019

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
...