0

在寻找未解决问题的解决方案时,我遇到了这个acs包。我认为,在 choropleth 包中无法从 format 的数据中获取任何县信息[city, state]。这就是为什么需要使用 acs 进行预处理的原因。

我尝试了以下代码来获取城市的县信息:

library(acs)
geo.lookup(state="CA", place="San Francisco")

> geo.lookup(state="CA", place="San Francisco")
  state state.name          county.name place               place.name
1     6 California                 <NA>    NA                     <NA>
2     6 California San Francisco County 67000       San Francisco city
3     6 California     San Mateo County 73262 South San Francisco city

众所周知,城市可以是不同县的一部分。最有可能的是,我会选择第二个

> geo.lookup(state="CA", place="San Francisco")[2,]

  state state.name          county.name place         place.name
2     6 California San Francisco County 67000 San Francisco city

默认。

我的问题: 有没有办法获得州缩写、县名和县 FIPS?我在文档中找不到答案。

此外,为了进一步处理(与 choroplethr 匹配),需要删除最后一个“县”county.name和“城市” 。place.name

4

1 回答 1

2

下面介绍如何将州缩写、县名和县 FIPS 添加到您的示例中。R 具有用于状态名称和状态缩写的内置变量。对于 FIPS 代码,我从人口普查局的网站上阅读了一个 csv 文件。

library(acs)
library(tidyverse)

states <- cbind(state.name, state.abb) %>% tbl_df()

fips <-
  read_csv(
    "https://www2.census.gov/geo/docs/reference/codes/files/national_county.txt",
    col_names = c("state.abb", "statefp", "countyfp", "county.name", "classfp")
  )

query <- geo.lookup(state = "CA", place = "San Francisco")[2, ] %>%
  tbl_df() %>%
  left_join(states, by = "state.name") %>%
  left_join(fips, by = c("county.name", "state.abb"))

query

# # A tibble: 1 x 9
# state state.name          county.name place         place.name state.abb statefp countyfp classfp
# <chr>      <chr>                <chr> <int>              <chr>     <chr>   <chr>    <chr>   <chr>
#   1     6 California San Francisco County 67000 San Francisco city        CA      06      075      H6

正如您在问题末尾指出的那样,您可能需要进一步清理这些数据以使其适合choroplethr

于 2017-11-27T14:51:43.410 回答