自動化された解決策を見つけようとしているという迷惑な問題があります。簡略版は、シェープファイルと、国内の地域用に作成されたデータのテーブルがあることです。作成されたデータテーブルには、シェープファイルと照合するための標準化されたGID /管理コードは含まれておらず、リージョン名も完全には一致していません。よく見てみましょう。これが私のダミーデータフレーム+シェープファイルです。
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)
だから私が持っているのは、一見ランダムなID、地域名、およびコロプレスマップでプロットされる値のテーブルです。このように見えます:
> 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
関心のあるシェープファイル属性を見ると、次のことがわかります。
> 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
理想的にdf
は、シェープファイルに結合するために、ある種の一致する管理IDを含めることになります。残念ながら、私が使用しているデータを作成した人は、これらの規則に従っていませんでした。あるいは、リージョン名自体を一致させるのは素晴らしいことですが、ご覧のように、名前ごとにわずかな違いがあります。
手作業での照合は常にバックアップソリューションですが、それを行うために時間をかけたい人はいますか?;)しかし、実際には、怠惰を除けば、私が取り組んでいるプロジェクトは数十および数十の国のマッピングになるため、手動で何もすることなくすべてを実行できる自動化されたソリューションを探しています。これは可能ですか?これらのほぼリージョン名をシェープファイルに一致させることはできますか?
補足:この投稿でgrepl
文字列の部分一致を探していますが、各地域名を手動で入力するのではなく、列名から描画する必要があるため、これが潜在的な解決策かどうかはわかりません。
編集:手作業でIDを照合する場合、データフレームに新しい列を作成し、シェープファイルから完全に一致する用語を追加します。残念ながら、データの特殊性のため、名前の順序も一致していません。そのため、これにはまだ手動での入力が必要です。私はある種の完全に自動化されたソリューションを望んでいます(可能であれば)