2016-05-12 3 views
0

Um ein Kartenwerkzeug in meine App zu implementieren, habe ich von GADM eine .rds Formdatei geladen.Leaflet in glänzender effizienter Weise, um Daten mit Shape-Datei zu kombinieren

Die Karte in glänzend funktioniert gut, aber ich bin mir nicht sicher über den nächsten Schritt. Soweit ich es verstanden habe, muss ich die .rds Datei mit meinen tatsächlichen Daten übereinstimmen? Sie beide teilen eine gemeinsame ID, aber eine einfache merge() Ergebnisse in NA innerhalb der Datenfelder. Was ist ein effizienter Weg, um die Formdatei und meine Daten (in einem reaktiven Ausdruck) zusammen zu bringen?

EDIT: Mein Code so weit:

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))   
    }) 

Problem ist nun, wie die pal Werte von meinem reaktiven Ausdruck zuzugreifen: dat()$pal funktioniert nicht.

+0

Zwei Dinge: Zuerst sehe ich nicht, woher dein 'Map_ger'-Objekt stammt. Zweitens, wenn Sie 'sp :: merge (adm, test_data, by.x =" ID_1 ") verwenden, sollten Sie bekommen, was Sie wollen. – TimSalabim

Antwort

1

Sie haben die Antwort bereits:

Sie beide teilen eine gemeinsame ID, aber eine einfache merge() Ergebnisse in NA innerhalb die Datenfelder.

Wenn Sie NA Werte Ihre merge Befehl bekommen funktioniert nicht. Ohne einen Blick auf den Daten, können Sie versuchen, prüfen, um zu überprüfen, dass die Werte in Ihren Vektoren tatsächlich gleich sind, zum Beispiel:

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

Sie für den Ausdruck wünschen können:

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

TRUE zurückzukehren. Gemeinsame Konzepte befasst sich mit der Behebung des Problems Lauf beinhalten kann:

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

Auf Ihre beiden ID Spalten, die Leerzeichen oder variable Verwendung von Groß-/Kleinschreibung, um sicherzustellen, Probleme verursachen beim Zusammenführen; Dies ist ein häufiges Hindernis beim Umgang mit Daten mit geografischen Namen.


Bitte beachten Sie, dass das beschriebene merge Problem wäre viel einfacher zu lösen, wenn Sie einige Beispieldaten veröffentlichen halten.

Verwandte Themen