有几个 R
包可以更轻松地处理美国人口普查数据。我最常用的两个是 tigris
(用于加载空间数据)和 acs
(用于加载表格数据)。
然而,我经常遇到的一个问题是,我无法找到一种高效、可靠的方法来确定某个地方(如城市或县)内所有的区域(如人口普查区、街区组、邮政编码等),而不离开 R
控制台。
例如,如果我想要使用西雅图的人口普查区块数据,我将首先使用 tigris::tracts
下载华盛顿州金县的空间数据:
library(tigris)
tr <- tigris::tracts(state = "WA", county = "King")
但不幸的是,目前没有明显的方法来对这些数据进行子集化,以仅包括西雅图地区。
glimpse(tr)
Observations: 398
Variables: 12
$ STATEFP (chr) "53", "53", "53", "53", "53", "53", "53", ...
$ COUNTYFP (chr) "033", "033", "033", "033", "033", "033", ...
$ TRACTCE (chr) "003800", "021500", "032704", "026200", "0...
$ GEOID (chr) "53033003800", "53033021500", "53033032704...
$ NAME (chr) "38", "215", "327.04", "262", "327.03", "3...
$ NAMELSAD (chr) "Census Tract 38", "Census Tract 215", "Ce...
$ MTFCC (chr) "G5020", "G5020", "G5020", "G5020", "G5020...
$ FUNCSTAT (chr) "S", "S", "S", "S", "S", "S", "S", "S", "S...
$ ALAND (dbl) 624606, 3485578, 17160645, 15242622, 10319...
$ AWATER (dbl) 0, 412526, 447367, 526886, 175464, 0, 4360...
$ INTPTLAT (chr) "+47.6794093", "+47.7643848", "+47.4940877...
$ INTPTLON (chr) "-122.2955292", "-122.2737863", "-121.7717...
同样地,
acs
软件包允许用户使用 geo.make
功能创建人口普查数据的子集,但在我的示例中,如果我没有所有西雅图普查区 GEOID 的列表,这将对我没有帮助。
值得一提的是,我知道可以在其他地方确定此信息。 页面 在Census.gov FAQ中清楚说明了如何确定给定census Place中的所有普查区。 但是,考虑到这是许多与人口普查相关的分析的关键步骤,最好有一种方便的方法可以从 R
控制台中完成。
提前致谢。
编辑
尽管这个问题涉及空间数据,我最感兴趣的是找到一个非空间解决方案。例如,我更喜欢查询人口普查API并返回所需GEOIDs的向量的解决方案,而不是使用空间分析工具(例如rgeos::intersects
)来创建向量。为什么?因为在这个过程中,空间方法更容易出现错误,而这是我们正在讨论的已知信息,而不是需要通过空间推断的东西。
R
之外获取此信息的方法(请参见我上面提供的链接)需要与美国FactFinder接口进行交互。这似乎是一个非常棘手的过程,难以编写成一个R
函数,但如果您有想法,我很乐意听取。 - Tiernan