来自 Spacedman 的信息是正确的,但 Matt 询问如何在 douglas_zips 功能和包含铅水平列表的单独表之间执行数据连接。
“连接”是 GIS 和广泛的关系数据库中的基本功能,因此它是一项关键技能。
我们想要使用我们的 douglas_zips 功能并通过邮政编码匹配 lead_levels 表中的所有记录,将 lead_levels 中的列添加到 douglas_zips。我们可以使用 merge() 来完成它。
https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/merge
注意:为来自 tigris 的 ZCTA 指定“cb=TRUE, year=2020”或“cb=FALSE”(默认值)。
library(tigris)
library(sf)
library(plyr)
douglas_zips <- zctas(cb=TRUE, year=2020, starts_with=c("80108","80109", "80104", "80116", "80126", "80129", "80130", "80118", "80124", "80131", "80134", "80138", "80125", "80135"))
## made up data.frame to simulate what you described as your dataset
zipcode = c("80108","80109", "80104", "80116", "80126", "80129", "80130", "80118", "80124", "80131", "80134", "80138", "80125", "80135")
town = c("town1","town2","town3","town4","town5","town6","town7","town8","town9","town10","town11","town12","town13","town14")
lead_level = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
dataset = data.frame(zipcode, town, lead_level)
douglas_lead_levels <- merge(douglas_zips, dataset, by.x="ZCTA5CE20",by.y="zipcode")
结果将向 douglas_zips 添加两列:“town”和“lead_level”。
从那里,我们可以像 Spacedman 解释的那样绘制 lead_level 变量:
plot(douglas_lead_levels["lead_level"])