2017-08-08 5 views
0

Voici mon code reproductible:Comment convertir les codes de pays dans les noms de pays

library(tidyverse) 
library(eurostat) 
library(countrycode) 

#Query eurostat data set 
search <- search_eurostat("road", type = "table") 

#Accessing "People killed in road accidents" data set. 
df <- get_eurostat("tsdtr420") 

#Create a data frame filtered on most recent data (2015) 
accidents2015 <- df %>% 
    filter(time == "2015-01-01") 

codes <- select(accidents2015, geo) 

countrycode(sourcevar = codes, "iso2c", "country_name") 

Lorsque la dernière ligne fonctionne, je reçois ce message d'erreur:

la condition a une longueur> 1 et seule la première element sera utiliséError dans countrycode (sourcevar = codes, "iso2c", "country_name"): sourcevar doit être un caractère ou un vecteur numérique.

Répondre

0
  1. passer un vecteur, pas une trame de données/Tibble comme sourcevar

  2. utilisation country.name, non country_name comme le code de destination

  3. dans Dans votre cas spécifique, il est préférable d'utiliser eurostat comme code d'origine

par exemple ...

library(tidyverse) 
library(eurostat) 
library(countrycode) 

accidents2015 <- 
    get_eurostat("tsdtr420") %>% 
    filter(time == "2015-01-01") 

countrycode(sourcevar = accidents2015$geo, "eurostat", "country.name") 
+0

Merci beaucoup! tu as donné la meilleure réponse! – Tdebeus

0

Tout d'abord codes est une trame de données et vous devez passer un vecteur utiliser la colonne à-dire de la trame de données. En outre, remplacez la classe d'un facteur par un caractère. Enfin, il est "country.name" pas "country_name":

codes$geo = as.character(codes$geo) 

countrycode(sourcevar = codes$geo, "iso2c", "country.name") 


[1] "Austria"  "Belgium"  "Switzerland" "Cyprus"   "Czech Republic" "Germany"  "Denmark"  
[8] "Estonia"  NA    "Spain"   "Finland"  "France"   "Croatia"  "Hungary"  
[15] "Iceland"  "Italy"   "Lithuania"  "Luxembourg"  "Latvia"   "Malta"   "Netherlands" 
[22] "Norway"   "Poland"   "Portugal"  "Romania"  "Slovenia"  NA 
+0

également pas sûr de EL, mais au Royaume-Uni devrait être GB à convertir correctement – Olivia

+1

Merci pour votre réponse! – Tdebeus