2016-10-28 1 views
0

何らかの形で関連していますが、対応するデータベース(dbf-File)に異なる数の属性を含む多くのシェープファイルを含むフォルダがあります。 は私が今の問題は、対応する情報が、時々「伝説」と時々ないという列を含む、異なっていることであるRで異なる属性セットを持つ複数のシェープファイルをインポートして結合する

files<-list.files(path=".",pattern=".shp$") 
files<-sub(".shp","",files) 
for(i in files){ 
    assign(i,readOGR(".",i)) 
} 

使用してRにそれらすべてをロードするために管理しました。 2をマージする

> str([email protected]) 
'data.frame': 1704 obs. of 7 variables: 
$ NRKART : int 6 1 7 15 7 15 1 7 999 999 ... 
$ SCHRAFFUR : Factor w/ 2 levels "A","L": NA NA NA NA NA NA NA NA NA NA ... 
$ TKLE_NR : int 151806 151801 151807 151815 151807 151815 151801 151807 151800 151800 ... 
$ Symbol : Factor w/ 86 levels "1","10","100",..: 61 1 62 22 62 22 1 62 54 54 ... 
$ BGL  : Factor w/ 11 levels "0.0","1.1","1.2",..: 2 2 2 3 2 3 2 2 1 1 ... 
$ Shape_Area: num 4123982 20460030 436214 3904785 364182 ... 
$ Shape_Len : num 65111 43803 3152 19753 3174 ... 

> str([email protected]) 
    'data.frame': 2705 obs. of 8 variables: 
    $ NRKART : int 22 14 48 42 27 14 14 1 999 48 ... 
    $ SCHRAFFUR : Factor w/ 1 level "A": NA NA NA NA NA NA NA NA NA NA ... 
    $ TKLE_NR : int 471822 471814 471848 471842 471827 471814 471814 471801 471800 471848 ... 
    $ BGL  : Factor w/ 15 levels "0.0","10.1","11.1",..: 11 11 13 12 12 11 11 6 1 13 ... 
    $ SYMBOL_NR : Factor w/ 80 levels "107","161","176",..: 1 24 18 56 67 24 24 36 22 18 ... 
    $ Legende : Factor w/ 84 levels "00 Gewässerflächen",..: 23 15 49 43 28 15 15 2 1 49 ... 
    $ Shape_Area: num 2300557 568922 2512166 1044624 13708524 ... 
    $ Shape_Len : num 13251 3298 7387 5235 40118 ... 

私れる好ましい方法は、それが形Bのすべての列が含まれているので、私はインポートまたは各帰属データフレームの名前を変更するにはどうすればよい

library(taRifx.geo) 
New<-rbind(A,B,fix.duplicated.IDs=TRUE) 

を使用することです。列名シンボル(A)の名前もSYMBOL_NRで変更する必要があります

答えて

0

正しく理解していれば、ファイルをマージするのではなく、ファイルの後ろに追加する必要があります。 Bの情報をAとBの情報を1つの行に結合しようとはしません)。

bind_rowsdplyrから(あなたがそれにいる間にrenameを使用して列を修正することができます)を提案します。必要に応じて列名が一致し、必要に応じてNAを入力する必要があります。

New <- 
    bind_rows(
    [email protected] %>% 
     rename(SYMBOL_NR = Symbol) 
    , [email protected] 
) 
+0

あなたの提案はdata.framesで動作しますが、私はデータフレームと地理データの両方を含むシェープファイルを扱います。したがって、あなたのソリューションはうまく動作しません。 – user2386786

+0

シェイプファイルでは動作しませんので、混乱してしまったことをお詫び申し上げます。私は 'rbind'がシェイプファイルの追加の部分を扱う方法を持っていたことに気づいていませんでした。あるいは、地理データが2つのセットで同じ場合、 '@ data'アクセサに' New' data.frameを割り当てることができますか?あるいは、シェイプファイルの他の部分についても同様の 'bind_rows'を実行しますか? –

0

this

後、および@マークピーターソンのコメントは、あなたがデータに必要なものをやっていると仮定して(私は右の質問を得た場合)、これはあなたが求めるものを行うことができます:

newpolys <- rbind(A, B, makeUniqueIDs = TRUE) 
newdata <- bind_rows([email protected] %>% 
        rename(SYMBOL_NR = Symbol) 
        , [email protected] 
[email protected] = newdata 
関連する問題