In order to do this you will need an API key from the US Census. Go to this site to request one (takes a minute or two) and then use the api.key.install function in the acs package to use the key.
# ## Create a geographic set to grab tabular data (acs)
# geo.tab <- geo.make(
# state=c("TX"), # List of states
# county="Travis", # Here's our list of counties
# tract="*") # All tracts
## Fetch the data from the Census website
fetched <- acs.fetch(
geography = geo.make(state = "NY", county="*", tract = "*"),
endyear = 2012, span = 5,# Package only goes to 2013, so end=2012
table.number = "B19001", # Table showing 'Income'
col.names = "pretty") # Gives the full column definitions
## The resulting "fetched" object is not a data.frame; it's a list
names(attributes(fetched)) # see what's available
## [1] "endyear" "span" "acs.units" "currency.year"
## [5] "modified" "geography" "acs.colnames" "estimate"
## [9] "standard.error" "class"
## [1] "endyear" "span" "acs.units" "currency.year"
## [5] "modified" "geography" "acs.colnames" "estimate"
## [9] "standard.error" "class"
attr(fetched, "acs.colnames") # see column names
## [1] "Household Income: Total:"
## [2] "Household Income: Less than $10,000"
## [3] "Household Income: $10,000 to $14,999"
## [4] "Household Income: $15,000 to $19,999"
## [5] "Household Income: $20,000 to $24,999"
## [6] "Household Income: $25,000 to $29,999"
## [7] "Household Income: $30,000 to $34,999"
## [8] "Household Income: $35,000 to $39,999"
## [9] "Household Income: $40,000 to $44,999"
## [10] "Household Income: $45,000 to $49,999"
## [11] "Household Income: $50,000 to $59,999"
## [12] "Household Income: $60,000 to $74,999"
## [13] "Household Income: $75,000 to $99,999"
## [14] "Household Income: $100,000 to $124,999"
## [15] "Household Income: $125,000 to $149,999"
## [16] "Household Income: $150,000 to $199,999"
## [17] "Household Income: $200,000 or more"
## [1] "Household Income: Total:"
## [2] "Household Income: Less than $10,000"
## [3] "Household Income: $10,000 to $14,999"
## [4] "Household Income: $15,000 to $19,999"
## [5] "Household Income: $20,000 to $24,999"
## [6] "Household Income: $25,000 to $29,999"
## [7] "Household Income: $30,000 to $34,999"
## [8] "Household Income: $35,000 to $39,999"
## [9] "Household Income: $40,000 to $44,999"
## [10] "Household Income: $45,000 to $49,999"
## [11] "Household Income: $50,000 to $59,999"
## [12] "Household Income: $60,000 to $74,999"
## [13] "Household Income: $75,000 to $99,999"
## [14] "Household Income: $100,000 to $124,999"
## [15] "Household Income: $125,000 to $149,999"
## [16] "Household Income: $150,000 to $199,999"
## [17] "Household Income: $200,000 or more"
## Convert to a data.frame for merging
acs_df <- data.frame(
paste0(
str_pad(fetched@geography$state, 2, "left", pad="0"),
str_pad(fetched@geography$county, 3, "left", pad="0"),
str_pad(fetched@geography$tract, 6, "left", pad="0")),
fetched@estimate[,c("Household Income: Total:", "Household Income: $200,000 or more")],
stringsAsFactors = FALSE)
acs_df <- select(acs_df, 1:3) %>% tbl_df()
rownames(acs_df) <- 1:nrow(acs_df)
## Warning: Setting row names on a tibble is deprecated.
names(acs_df) <- c("GEOID", "total", "over_200")
acs_df$percent <- 100*(acs_df$over_200/acs_df$total)