我正在尝试创建一个地图,显示专有数据(shapefile)的覆盖范围。基本上,结果将显示数据覆盖了多少连续的美国。我使用了st_intersection
,但它只保存“匹配”的行。有没有办法也保留“未匹配”的行,这样我就可以指出哪个区域是"NA"?
下面是一个可重现的例子。假设我在DC地区有邮政编码地图的一个子集(" zip "),而DC地区邮政编码地图的其余部分不可用(当然这在现实中是不正确的,但这是我在实际数据中面临的问题)。当我使用dc_zip时,只绘制匹配的行。相反,我想要的是(部分)通过首先绘制DC的整个多边形并在其上绘制邮政编码来实现的。在这里,我可以将DC划分为创建了邮政编码地图和没有绘制邮政编码地图的区域。这是最好的方法吗?
library(USAboundaries)
library(sf)
library(dplyr)
library(tigris)
library(tmap)
dc <- USAboundaries::us_states() %>% filter(statefp == "11") %>% st_transform(crs = 4269)
zip <- tigris::zctas(starts_with = "2000", class = "sf")
dc_zip <- st_intersection(zip, dc)
tm_shape(dc_zip) + tm_polygons() # drops unmatched rows
tm_shape(dc) + tm_polygons("grey80") + tm_shape(zip) + tm_polygons("green") # keeps unmatched rows
如有任何意见,欢迎光临!
转载请注明出处:http://www.hengzou.net/article/20230526/2437907.html