Как использовать R для загрузки данных из American Fact Finder?

В вопросе, связанном с моим предыдущим вопросом, я хотел бы знать, как загрузить данные из American Fact Finder. В соответствии с американским справочником по поиску фактов по фактам, http-путь к ссылкам довольно регулярен и остается неизменным с течением времени. Руководство Deeplink представляет примеры того, как добраться до таблиц, а именно:

Отобразить таблицу B07010 из трехлетних оценок Американского сообщества, проведенных в 2006–2008 годах для США, штат Алабама, и округа Аутуга, штат Алабама: http://factfinder.census.gov/bkmk/table/1.0/en/ACS/08_3YR/B07010/0100000US%7C0400000US01%7C05000 00US01001

Но я не уверен, как преобразовать "просмотр" в "скачать" в R.

Мое текущее расследование основано на этих темах:

  1. Использование R для загрузки сжатого файла данных, извлечения и импорта данных
  2. Использование R для загрузки сжатого файла данных, извлечения и импорта CSV
  3. Экспорт данных из переписи 2010 года
  4. Загрузить данные переписи с помощью R
  5. Как использовать Census API для извлечения данных

Я буду обновлять этот пост, когда я приду к решению.

1 ответ

Это самое эффективное решение, которое я нашел на сегодняшний день:

Управление и отображение данных переписи США в R с использованием пакетов acs, tigris и листовок

library(tigris)
library(acs)
library(stringr) #to pad fips codes
library(gdtools)

#grab the spatial data (tigris)
#note that you can use the county names inthe tigris package but not in the acs.fetch function from the ACS pacakge so I'm using FIPS numbers here.
#Grab the spatial data
counties<-c(5,47,61,81,85)
#solve the 'an error occurred in the secure channel support'
#firewall issue? #nope. 
#https://www2.census.gov/geo/tiger/GENZ2015/shp/
#download via chrome works fine.
library(gdtools) #did not fix it. 
#libcurl may fix it
#https://stackru.com/questions/29688026/vb6-winhhtp-error-occurred-in-the-secure-channel-support
library(curl)
tracts<-tracts(state='NY', county = c(5,47,61,81,85), cb=TRUE)
#It does!

##----------------get the tabular data--------------------
#zevross.com/blog
#get the tabular data
#in order to do this, you will need an API key from the US Census. 

#Go to https://api.census.gov/data/key_signup.html
#to request one (takes a minute or two) and then 
#use the api.key.install function in the `acs` package to use the key.

api.key.install(key="GETYOUROWNKEEY")
#make a geographic set to grab tabular data (acs)
geo<-geo.make(state=c("NY"), county = c(5,47,61,81,85), tract = "*")
#package not updated to 2013 data, so 2012 used as terminal year
income<-acs.fetch(endyear=2012, span=5, geography=geo, table.number="B19001", col.names ="pretty")
#pretty gives fully column names, not census abbreviation. 
#B19001_001 and *.017 are total income and income over $200k
#what results is not data, but a list of what is available.
names(attributes(income)) #shows what's available
attr(income, "acs.colnames")

#convert to data frame for merging. 
income_df<-data.frame(paste0(
                            str_pad(income@geography$state,2,"left", pad="0"),
                            str_pad(income@geography$county,3,"left", pad = "0"),
                            str_pad(income@geography$tract,6,"left", pad="0")),
                            income@estimate[,c(
                                    "Household Income: Total:",
                                    "Household Income: $200,000 or more")], 
                                    stringsAsFactors=FALSE)
                                    #that worked, 12/18/2017                                                       
library(dplyr) #required for select
income_df<-select(income_df, 1:3)
rownames(income_df)<-1:nrow(income_df)
names(income_df)<-c("GEOID","total","over_200")
income_df$percent <-100*(income_df$over_200/income_df$total)
#works!    
Другие вопросы по тегам