{"word_count": 280, "character_count": 2861}
La plupart des cartes du monde standard de R sont en anglais. L'autre jour, des étudiants souhaitaient visualiser des données tirées d'une base où les noms des pays sont en anglais. Pour obtenir une correspondance entre des noms anglais et des noms français, on peut utiliser la base suivante&#62; library(gdata)&#62; library(xlsx)&#62; download.file("http://www.stat.gouv.qc.ca/statistiques/divisions-territoriales/pays-liste-isq-web.xls","corresp")&#62;  xls_corresp &#60;- read.xls("corresp",sheet=1,encoding="latin1")On a ici&#62;  df_corresp &#60;- data.frame(+ FR=xls_corresp$X.5,+ EN=xls_corresp$X.11)&#62; df_corresp[5:10,]                    FR                 EN5  Belgique-Luxembourg Belgium-Luxembourg6    Îles du Pacifique    Pacific Islands7          Afghanistan        Afghanistan8       Afrique du Sud       South Africa9           Îles Åland      Åland Islands10             Albanie            AlbaniaPour avoir une correspondance, entre les noms sous R, et ceux dans la base à notre disposition, il faut manipuler un peu les chaînes de caractères,&#62;  df_corresp$FR = as.character(df_corresp$FR)&#62;  df_corresp$FR = iconv(df_corresp$FR, to="ASCII//TRANSLIT") &#62;  df_corresp$FR = tolower(df_corresp$FR)&#62;  remove_minus = function(s) paste(unlist(strsplit(s, split='-',fixed=TRUE)),collapse="")&#62;  remove_space = function(s) paste(unlist(strsplit(s, split=' ',fixed=TRUE)),collapse="")&#62;  df_corresp$FR = sapply(df_corresp$FR,remove_minus)&#62;  df_corresp$FR = sapply(df_corresp$FR,remove_space)&#62; df_corresp$EN = as.character(df_corresp$EN)&#62; df_corresp$EN = iconv(df_corresp$EN, to="ASCII//TRANSLIT") &#62; df_corresp$EN = tolower(df_corresp$EN)&#62; df_corresp$EN = sapply(df_corresp$EN,remove_minus)&#62; df_corresp$EN = sapply(df_corresp$EN,remove_space)&#62; split_dots = function(s) strsplit(s, split=':',fixed=TRUE)[[1]][1]Si on regarde les pays que l'on a pu convertir le nom en anglais pour avoir une correspondance avec le nom du pays dans la base de R,&#62; library(maps)&#62;  world&#60;-map(database="world")&#62;  world$pays_EN &#60;- world$names  &#62;  world$pays_EN &#60;- tolower(world$pays_EN)&#62;  world$pays_EN = sapply(world$pays_EN,remove_space) &#62;  world$pays_EN = sapply(world$pays_EN,remove_minus) &#62;  world$pays_EN = sapply(world$pays_EN,split_dots) &#62;  world$pays_FR &#60;- df_corresp$FR[match(world$pays_EN, df_corresp$EN)]on obtient le graphique suivant&#62;  color &#60;- !is.na(world$pays_FR)&#62;  map(database="world", fill=TRUE, col=color)Les seuls pays pour lesquels on n'a pas de correspondance sont les États-Unis d'Amérique (usa dans la base de R), la Russie (ussr), les Congos (avec la République Démocratique et l'autre), et la Côte d'Ivoire. En bricolant un peu sur ces 4 pays, on pourra avoir une correspondance entre les noms utilisés sous R, et les noms en français.