传单以闪亮有效的方式将数据与形状文件相结合

时间:2016-05-12 07:57:56

标签: r shiny leaflet

要在我的应用中实施地图工具,我从GADM加载了.rds形状文件。

在闪亮的地方显示地图很好,但我不确定下一步。据我所知,我必须将.rds文件与我的实际数据相匹配? 它们共享一个公共ID,但简单的merge()会在数据字段中生成NA。什么是将形状文件和我的数据(在反应式表达式中)组合在一起的有效方法?

编辑: 到目前为止我的代码:

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值:dat()$pal无效。

1 个答案:

答案 0 :(得分:1)

你已经得到了答案:

  

他们都共享一个公共ID,但一个简单的merge()会导致NA内部   数据字段。

如果您获得NA值,则merge命令不起作用。在不查看数据的情况下,您可以考虑尝试验证向量中的值实际上是否相同,例如:

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

您可能想要表达式:

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

返回TRUE。与修复问题有关的常见方法可能涉及运行:

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

在两个ID列上确保空格或变量使用大写/小写在合并时会产生问题;在处理具有地理名称的数据时,这是一个常见的障碍。

请注意,如果考虑发布一些示例数据,所描述的merge问题会更容易解决。