J'ai un problème ennuyeux pour lequel j'essaie de trouver une solution automatisée. La version abrégée est que j'ai un fichier de formes et un tableau de données créées pour les régions au sein des pays. La table de données créée n'a AUCUNE sorte de GID / codes d'administration standardisés à faire correspondre aux fichiers de formes, et les noms de région ne sont pas non plus des correspondances exactes. Regardons de plus près; voici mon faux cadre de données + shapefile.
library(rgdal)
#load in shapefile
arm <- readOGR("D:/Country-Shapefiles/ARM_adm_shp", layer = "ARM_adm1")
#create dummy data frame
id <- c(100:110)
name <- c("Aragatsotn", "Ararat", "Armavir", "Gaghark'unik'", "Kotayk", "Lorri",
"Shirak", "Syunik'", "Tavush", "Vayots' Dzor", "Yerevan City")
value <- runif(11, 0.0, 1.0)
df <- data.frame(id, name, value)
Donc, ce que j'ai, c'est un tableau avec des identifiants apparemment aléatoires, des noms de régions et une valeur à tracer avec une carte choroplèth. Ressemble à ça:
> df
id name value
1 100 Aragatsotn 0.6923852
2 101 Ararat 0.5762024
3 102 Armavir 0.4688358
4 103 Gaghark'unik' 0.4702253
5 104 Kotayk 0.9347992
6 105 Lorri 0.1937813
7 106 Shirak 0.5162604
8 107 Syunik' 0.4332389
9 108 Tavush 0.9889513
10 109 Vayots' Dzor 0.2182024
11 110 Yerevan City 0.5791886
En regardant les attributs de fichiers de formes d'intérêt, nous avons ceci:
> arm@data[c("ID_1", "NAME_1")]
ID_1 NAME_1
0 1 Aragatsotn
1 2 Ararat
2 3 Armavir
3 4 Erevan
4 5 Gegharkunik
5 6 Kotayk
6 7 Lori
7 8 Shirak
8 9 Syunik
9 10 Tavush
10 11 Vayots Dzor
Idéalement, il df
faudrait inclure une sorte d'ID administrateur correspondant à joindre au fichier de formes. Celui qui a créé les données que j'utilise n'a malheureusement pas respecté ces conventions. Alternativement, ce serait bien de faire correspondre les noms de région eux-mêmes ... mais comme vous pouvez le voir, il y a de légères variations dans chaque nom.
L'appariement à la main est toujours une solution de sauvegarde, mais qui veut prendre le temps de le faire? ;) Mais vraiment, même en dehors de la paresse, le projet sur lequel je travaille sera de cartographier des dizaines et des dizaines de pays différents, donc je recherche une solution automatisée qui peut tout faire sans rien faire à la main. Est-ce possible? Puis-je d'une manière ou d'une autre faire correspondre ces noms de région-presque aux fichiers de formes?
Sidenote: Je cherche grepl
des correspondances de chaînes partielles dans cet article , mais je ne suis pas sûr que ce soit une solution potentielle car je devrai tirer des noms de colonnes plutôt que d'entrer chaque nom de région à la main.
EDIT: Lorsque je fais correspondre les ID à la main, ce que j'ai fait est de créer une nouvelle colonne dans mon bloc de données et d'ajouter les termes correspondants exacts à partir du fichier de formes. Malheureusement, en raison des particularités des données, l'ordre des noms ne correspond pas non plus, donc cela nécessite encore une saisie manuelle. J'espère une sorte de solution complètement automatisée (si c'est même possible).