2017-02-16 48 views
1

在与我的previous question有关的问题中,我想知道如何从American Fact Finder下载数据。根据美国实况调查Deep-linking guide,链接的http路径非常规则,并且随着时间的推移保持一致。深层链接指南介绍了如何去表,即例子:从2006 - 2008年美国社区调查 3年估计美国,阿拉巴马州和奥陶加县,阿拉巴马如何使用R从美国Fact Finder下载数据?

显示表B07010: http://factfinder.census.gov/bkmk/table/1.0/en/ACS/08_3YR/B07010/0100000US|0400000US01|05000 00US01001

但我不能确定如何将“观点”到“下载”在R.

我目前的调查是基于这些线程:

  1. Using R to download zipped data file, extract, and import data
  2. Using R to download zipped data file, extract, and import csv
  3. Exporting Data From Census 2010
  4. Download Census Data Using R
  5. How to use Census API to pull data

,我来解决,我会更新这个帖子。

+0

我不知道这会有所帮助,但2005 - 2009年B07010可以通过优秀的'ACS访问'包。 – Tiernan

回答

0

这是最有效的解决方案,我发现迄今:

Manipulating and mapping US Census data in R using the acs, tigris and leaflet packages

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://stackoverflow.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([email protected]$state,2,"left", pad="0"), 
          str_pad([email protected]$county,3,"left", pad = "0"), 
          str_pad([email protected]$tract,6,"left", pad="0")), 
          [email protected][,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!  
相关问题