2016-05-12 7 views
0

私のアプリにマップツールを実装するには、GADMからロードしました。.rdsシェイプファイル。シェイプファイルとデータを結合する光沢のある効率的なリーフレット

光沢のある地図を表示しても問題ありませんが、次のステップについてはわかりません。私が理解している限り、.rdsファイルを実際のデータと一致させる必要がありますか? 両者は共通のIDを共有しますが、単純なmerge()の結果はデー​​タフィールド内にNAとなります。形状ファイルとデータ(反応式内)を一緒にまとめる効率的な方法は何ですか?

EDIT:これまで マイコード:dat()$palが作動していません。今

dat <- reactive({ 
    adm <- getData('GADM', country='DEU', level=1) 
    #test data 
    test_data <- data.frame(ID_1= (1:16), N= (1:16)) 
    #join 
    joined <- merge(Map_ger, test_data, by.x="ID_1") 
    #color pallete 
    pal <- colorNumeric(
    palette = "Blues", 
    domain = joined$N 
) 

    }) 

    output$mymap <- renderLeaflet({ 
    leaflet() %>% addProviderTiles("Esri.WorldGrayCanvas") %>% 
    addPolygons(data=dat(),stroke = FALSE, smoothFactor = 0.2, fillOpacity = 1, 
       color = ~pal(N))   
    }) 

問題は、私の反応式からPAL値にアクセスする方法です。

+0

2つのこと:まず、あなたの 'Map_ger'オブジェクトがどこから来るのか分かりません。次に、 'sp :: merge(adm、test_data、by.x =" ID_1 ")'を使うと、あなたが望むものを得ることができます。 – TimSalabim

答えて

1

あなたはすでに答えを持っている:

彼らの両方が共通のIDが、NA 内のデータフィールドの簡単なmerge()結果を共有しています。

NAの値を取得している場合、mergeコマンドは機能しません。データを見もせず、あなたがたとえば、あなたのベクトル内の値が実際に同じであることを確認しようと検討してください。

a <- 1:10 
b <- rep(1:15, 3) 
unique(b) %in% unique(a) 

あなたは表現のためにしたいことがあります。

all(unique(b) %in% unique(a)) 

TRUEを返すように。問題を修正に関する一般的なアプローチはランニングを含むことができる:あなたのID列の両方に

trimws(tolower(as.character(yourID))) 

をマージする際に大文字/小文字の空白や変数の​​使用が問題を作成することを確実にするために、地理的な名前のデータを扱うときは、これが一般的な障害になります。


説明merge問題はあなたには、いくつかのサンプルデータを掲示する検討するかどう解決するためにはるかに容易になりますのでご注意ください。

関連する問題