3

有几个R软件包可以更轻松地处理美国人口普查数据。我最常使用的两个是tigris(用于加载空间数据)和acs(用于加载表格数据)。

R但是,我一直遇到的一个问题是,在不离开控制台的情况下,我无法找到一种有效、可靠的方法来确定 Place 内的所有区域(或街区组、邮政编码等) 。

例如,如果我想使用西雅图的人口普查区数据,我会首先使用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 常见问题解答中的此页面提供了有关如何确定给定人口普查地点中所有区域的明确说明。但鉴于这是许多与人口普查相关的分析中的关键步骤,最好有一种R控制台进行的便捷方法。

提前致谢。

编辑

虽然这个问题涉及空间数据,但我最感兴趣的是找到一个非空间解决方案。例如,我更喜欢查询 Census API 并将所需 GEOID 的向量返回到使用空间分析工具(例如rgeos::intersects)来创建向量的解决方案的解决方案。为什么?因为空间方法在这个过程中更容易出错,这是我们正在谈论的已知信息,而不是需要在空间上推断的东西。

4

2 回答 2

2

我经常需要相同类型的数据,所以我编写了一个 R 包来完成这项工作。这个包叫做totalcensus. 你可以在这里找到它https://github.com/GL-Li/totalcensus

使用此软件包,您可以非常轻松地获取城镇、城市、县、都会区和所有其他地理区域的区域、街区组或街区级别的数据。例如,如果您想从 2011-2015 ACS 5 年调查中获取各个区域的块组级别的比赛数据,只需运行如下代码:

mixed <- read_acs5year(
    year = 2015,
    states = c("ut", "ri"),
    table_contents = c(
        "white = B02001_002",
        "black = B02001_003",
        "asian = B02001_005"
    ),
    areas = c(
        "Lincoln town, RI",
        "Salt Lake City city, UT",
        "Salt Lake City metro",
        "Kent county, RI",
        "COUNTY = UT001",
        "PLACE = UT62360"
    ),
    summary_level = "block group"
)

它返回如下数据:

#                      area               GEOID        lon      lat state population white black asian GEOCOMP SUMLEV                                                             NAME
#    1:    Lincoln town, RI 15000US440070115001  -71.46686 41.94419    RI       1561  1386   128    47     all    150 Block Group 1, Census Tract 115, Providence County, Rhode Island
#    2:    Lincoln town, RI 15000US440070115002  -71.47159 41.96754    RI        916   806    97     0     all    150 Block Group 2, Census Tract 115, Providence County, Rhode Island
#    3:    Lincoln town, RI 15000US440070115003  -71.47820 41.96364    RI       2622  2373    77    86     all    150 Block Group 3, Census Tract 115, Providence County, Rhode Island
#    4:    Lincoln town, RI 15000US440070115004  -71.47830 41.97346    RI       1605  1516    43     0     all    150 Block Group 4, Census Tract 115, Providence County, Rhode Island
#    5:    Lincoln town, RI 15000US440070116001  -71.44665 41.93120    RI        948   764     0     0     all    150 Block Group 1, Census Tract 116, Providence County, Rhode Island
# ---                                                                                                                                                                               
# 1129: Providence city, UT 15000US490050012011 -111.82424 41.69198    UT       2018  1877     0     0     all    150            Block Group 1, Census Tract 12.01, Cache County, Utah
# 1130: Providence city, UT 15000US490050012012 -111.80736 41.69323    UT       1486  1471     0     0     all    150            Block Group 2, Census Tract 12.01, Cache County, Utah
# 1131: Providence city, UT 15000US490050012013 -111.81310 41.65837    UT       1563  1440    15     0     all    150            Block Group 3, Census Tract 12.01, Cache County, Utah
# 1132: Providence city, UT 15000US490050012022 -111.85231 41.68674    UT       3894  3594     0     0     all    150            Block Group 2, Census Tract 12.02, Cache County, Utah
# 1133: Providence city, UT 15000US490059801001 -111.64525 41.67498    UT        118   118     0     0     all    150             Block Group 1, Census Tract 9801, Cache County, Utah
于 2017-12-04T14:56:25.400 回答
1

使用ggmaps包,我们可以使用数据中的纬度/经度点进行反向地理编码以获取信息。这将创建一个包含所有数据点的城市名称的向量。

city <- vector(mode = "character", length=nrow(tr@data))
for (i in 1:nrow(tr@data))
    city[i] <- strsplit(revgeocode(c(as.numeric(tr@data[i,12]), 
                                     as.numeric(tr@data[i,11]))), ", ")[[1]][2]
head(city)
[1] "Seattle"          "Lake Forest Park" "North Bend"       "Tukwila"
      "Snoqualmie"       "Woodinville"
于 2016-03-30T17:44:40.273 回答