2016-06-27 4 views
2

スペインの州のシェイプファイルを特定のデータフレームとマージする際に問題があります。それらをマージした後、何とか形が偽の州にリンクされます(f.eバルセロナはテルエルの形を返します)。私は例を探しましたが、私が間違っていることを理解することはできません。スペイン語シェイプファイルとデータフレームの結合

すべての必要なファイルがこのフォルダに格納されます。 Dropbox folder

library(maptools) 
library(dplyr) 
library(data.table) 
library(reshape2) 

私はRに必要なすべてのファイルを入力します。

gor=readShapeSpatial('prov_map.shp') 
prov=read.csv("prov.csv",sep = ';') 
prov=subset(prov,select=-X) 

私は、データ・ファイル内の州名ので、彼らドンを修正実際の名前の前に番号がある場合は、結果の変数を因子に変換します。

provcorr=colsplit(prov$Province," ",c("Prov_num","Province")) 
prov$prov_num=provcorr$Prov_num 
prov$province_nonum=provcorr$Province 
prov$provfact=as.factor(prov$province_nonum) 
シェープファイルで

州名があるため、スペイン語のアクセントの少し奇妙なので、彼らはデータフレーム中のものと一致するように、私はそれらを修正:

prov_nom=c("Melilla","Ceuta", "Zaragoza","Zamora", "Bizkaia", 
     "Valladolid","Valencia/València","Toledo","Teruel", 
     "Tarragona","Soria","Sevilla","Segovia","Cantabria", 
     "Salamanca","Pontevedra","Palencia","Asturias","Ourense", 
     "Navarra","Murcia","Málaga","Madrid","Lugo","Rioja, La", 
     "Lleida", "León", "Jaén", "Huesca", "Huelva", "Gipuzkoa", 
     "Guadalajara","Granada","Girona","Cuenca","Coruña, A", 
     "Córdoba", "Ciudad Real", "Castellón/Castelló","Cádiz", 
     "Cáceres", "Burgos","Barcelona", "Balears, Illes", "Badajoz", 
     "Ávila", "Almería", "Alicante/Alcant","Albacete","Araba/Álava") 
[email protected]$NAMEBIEN=as.factor(prov_nom) 

はここまで、形状が完全に並んでいます州名が付いています。たとえば、次のように入力したとします。

plot(subset(gor,[email protected]$NAMEBIEN=='Barcelona')) 

バルセロナの形が現れます。しかし、私はそれらをマージしようとしました:

[email protected]=merge([email protected],prov,by.x='NAMEBIEN',by.y='provfact',all.x=T) 

これはもうありません。前と同じコードを次のように入力すると:

plot(subset(gor,[email protected]$NAMEBIEN=='Barcelona')) 

テルエルの形が現れます。

問題は私を狂っています。助言がありますか?

答えて

1

問題は、マージがデータフレームの順序を変更することです。元のデータフレームでは、テルエルは第9番目のポリゴンに関連付けられています。しかし、合併後、data.frameの9番目のエントリはバルセロナであり、したがってTeruelの多角形に関連付けられています。引き数sort = FALSEを追加すればうまくいくはずです。

[email protected]=merge([email protected],prov,by.x='NAMEBIEN',by.y='provfact',all.x=T, sort = FALSE) 
plot(subset(gor,[email protected]$NAMEBIEN=='Barcelona')) 

enter image description here

+0

ありがとうございました!私はちょうどRでプログラミングを始め、それを知らなかった。これは多くの助けになりました! – IArchondo

関連する問題