删除 geo_join 中未使用的 GEOID
Remove unused GEOID in geo_join
我正在尝试绘制明尼苏达州、爱荷华州和内布拉斯加州各县的盈利能力图。使用 leaflet
和 tigris
,我已经能够绘制所有县,无论我是否有数据。这给我留下了几个带有颜色的县,其余标记为 NA。我有没有办法从我的 geo_join
数据中删除所有 NA,这样它就不会在威斯康星州未使用的区域使用?我已经尝试使用 fortify
,但是当我将 TIGER 边界线与我的县 FIPS 文件合并以删除它们时,我不知道如何确定我正在查看的县边界。
这是我的 leaflet
目前的样子:
我获取地图的代码是这样的:
library(tigris)
library(leaflet)
pal <- colorNumeric(c("yellow","dark red"),county$Construction.Cost,na.color="white")
IA_counties <- counties(state="IA", cb=TRUE, resolution ="20m")
MN_counties <- counties(state="MN",cb=TRUE,resolution="20m")
NE_counties <- counties(state="NE",cb=TRUE,resolution="20m")
IA_merged <- geo_join(IA_counties,county,"GEOID", "GEOID")
MN_merged <- geo_join(MN_counties,county,"GEOID","GEOID")
NE_merged <- geo_join(NE_counties,county,"GEOID","GEOID")
popupIA <- paste0("County Projects: ", as.character(paste('$',formatC(format(round(IA_merged$Construction.Cost, 0), big.mark=',', format = 'f')))))
popupMN <- paste0("County Projects: ", as.character(paste('$',formatC(format(round(MN_merged$Construction.Cost, 0), big.mark=',', format = 'f')))))
popupNE <- paste0("County Projects: ", as.character(paste('$',formatC(format(round(NE_merged$Construction.Cost, 0), big.mark=',', format = 'f')))))
leaflet() %>%
addProviderTiles("MapQuestOpen.OSM") %>%
addLegend(pal = pal,
values = IA_merged$Construction.Cost,
position = "bottomright",
title = "County Projects",
labFormat=labelFormat(prefix="$")) %>%
addCircles(lng=yup2$lon, lat=yup2$lat,weight=.75,fillOpacity=0.01,color="red",
radius = 96560) %>%
addCircles(lng=yup2$lon, lat=yup2$lat,weight=.75,fillOpacity=0.01,color="blue",
radius = 193121) %>%
addPolygons(data = IA_counties,
fillColor = ~pal(IA_merged$Construction.Cost),
layerId=1,
fillOpacity = .25,
weight = 0.05,
popup = popupIA)%>%
addPolygons(data=MN_counties,
fillColor=~pal(MN_merged$Construction.Cost),
fillOpacity=0.25,
weight=0.05,
popup = popupMN) %>%
addPolygons(data=NE_counties,
fillColor=~pal(NE_merged$Construction.Cost),
fillOpacity=0.25,
weight=0.05,
popup = popupNE)
很抱歉没有包括可重现的数据,但如果需要,请询问。我希望这更像是一个简单的 na.color=
公式解决方案。该地图目前看起来 "okay",但如果可以不必使 fillOpacity
如此轻便,这样 NA 县就不会脱颖而出,我会喜欢它。
感谢您提供的所有帮助,如果您有任何问题,请告诉我!
所以,令人尴尬的是,这个问题的答案和我希望的一样简单。我调整了以下 na.color
代码,它完全符合我的要求。
pal <- colorNumeric(c("yellow","dark red"),county$Construction.Cost,na.color="transparent")
我是 tigris
包的创建者。非常感谢您使用它!在 GitHub (https://github.com/walkerke/tigris) 上 tigris
的开发版本中,我向 geo_join
添加了一个选项以适应内部联接,这将从生成的空间数据框(如果这是您要查找的内容)。如果需要,您还可以将通用合并列名称作为命名参数提供给新的 by
参数。例如:
IA_merged <- geo_join(IA_counties, county, by = "GEOID", how = "inner")
应该可以。我仍在测试,但我可能会在一月份将此更新提交给 CRAN。
我正在尝试绘制明尼苏达州、爱荷华州和内布拉斯加州各县的盈利能力图。使用 leaflet
和 tigris
,我已经能够绘制所有县,无论我是否有数据。这给我留下了几个带有颜色的县,其余标记为 NA。我有没有办法从我的 geo_join
数据中删除所有 NA,这样它就不会在威斯康星州未使用的区域使用?我已经尝试使用 fortify
,但是当我将 TIGER 边界线与我的县 FIPS 文件合并以删除它们时,我不知道如何确定我正在查看的县边界。
这是我的 leaflet
目前的样子:
我获取地图的代码是这样的:
library(tigris)
library(leaflet)
pal <- colorNumeric(c("yellow","dark red"),county$Construction.Cost,na.color="white")
IA_counties <- counties(state="IA", cb=TRUE, resolution ="20m")
MN_counties <- counties(state="MN",cb=TRUE,resolution="20m")
NE_counties <- counties(state="NE",cb=TRUE,resolution="20m")
IA_merged <- geo_join(IA_counties,county,"GEOID", "GEOID")
MN_merged <- geo_join(MN_counties,county,"GEOID","GEOID")
NE_merged <- geo_join(NE_counties,county,"GEOID","GEOID")
popupIA <- paste0("County Projects: ", as.character(paste('$',formatC(format(round(IA_merged$Construction.Cost, 0), big.mark=',', format = 'f')))))
popupMN <- paste0("County Projects: ", as.character(paste('$',formatC(format(round(MN_merged$Construction.Cost, 0), big.mark=',', format = 'f')))))
popupNE <- paste0("County Projects: ", as.character(paste('$',formatC(format(round(NE_merged$Construction.Cost, 0), big.mark=',', format = 'f')))))
leaflet() %>%
addProviderTiles("MapQuestOpen.OSM") %>%
addLegend(pal = pal,
values = IA_merged$Construction.Cost,
position = "bottomright",
title = "County Projects",
labFormat=labelFormat(prefix="$")) %>%
addCircles(lng=yup2$lon, lat=yup2$lat,weight=.75,fillOpacity=0.01,color="red",
radius = 96560) %>%
addCircles(lng=yup2$lon, lat=yup2$lat,weight=.75,fillOpacity=0.01,color="blue",
radius = 193121) %>%
addPolygons(data = IA_counties,
fillColor = ~pal(IA_merged$Construction.Cost),
layerId=1,
fillOpacity = .25,
weight = 0.05,
popup = popupIA)%>%
addPolygons(data=MN_counties,
fillColor=~pal(MN_merged$Construction.Cost),
fillOpacity=0.25,
weight=0.05,
popup = popupMN) %>%
addPolygons(data=NE_counties,
fillColor=~pal(NE_merged$Construction.Cost),
fillOpacity=0.25,
weight=0.05,
popup = popupNE)
很抱歉没有包括可重现的数据,但如果需要,请询问。我希望这更像是一个简单的 na.color=
公式解决方案。该地图目前看起来 "okay",但如果可以不必使 fillOpacity
如此轻便,这样 NA 县就不会脱颖而出,我会喜欢它。
感谢您提供的所有帮助,如果您有任何问题,请告诉我!
所以,令人尴尬的是,这个问题的答案和我希望的一样简单。我调整了以下 na.color
代码,它完全符合我的要求。
pal <- colorNumeric(c("yellow","dark red"),county$Construction.Cost,na.color="transparent")
我是 tigris
包的创建者。非常感谢您使用它!在 GitHub (https://github.com/walkerke/tigris) 上 tigris
的开发版本中,我向 geo_join
添加了一个选项以适应内部联接,这将从生成的空间数据框(如果这是您要查找的内容)。如果需要,您还可以将通用合并列名称作为命名参数提供给新的 by
参数。例如:
IA_merged <- geo_join(IA_counties, county, by = "GEOID", how = "inner")
应该可以。我仍在测试,但我可能会在一月份将此更新提交给 CRAN。