This is the last tidycensus example that I’ve prepared. Hope this proves useful!
Stay safe!
Chuck Purvis,
Hayward, California
formerly of the Metropolitan Transportation Commission, San Francisco California.
clpurvis(a)att.net
Example #4. Explore the Geographies that Tidycensus can pull out.
This is an example of using tidycensus to extract 2014/18 ACS data for all available
geographies for the entire USA. It’s just a test of capabilities.
Some geographic levels (county subdivision, state upper and lower houses) don’t appear to
be working.
There is some extra code in the “PUMA step” to tally the number of PUMAs per US state,
and the minimum and maximum total population levels for each PUMA in the US.
# Step 0: Load relevant libraries into each R-session.
library(tidyverse)
library(tidycensus)
library(janitor)
library(plyr) # This is needed for a function to concatenate a lot of files in one
statement!
library(dplyr)
# Add the variable Geography_Name to each data frame. Maybe concatenate/pancake these
dataframes?
selvars <- c(TotalPop_ = "B06001_001", # Total Population
SamplePop_ = "B00001_001", # Unweighted Sample Count of
Population
HHUnits_ = "B25002_001", # Total Housing Units
Househlds_ = "B25002_002", # Total Households
SampleDU_ = "B00002_001") # Unweighted Sample Count of Dwelling
Units
#------------------------------------------------------------------------------------
us <- get_acs(survey="acs5", year=2018, geography = "us",
show_call = TRUE,output="wide", variables = selvars)
us$Geography_Name <- "us"
#------------------------------------------------------------------------------------
region <- get_acs(survey="acs5", year=2018, geography = "region",
show_call = TRUE,output="wide", variables = selvars)
region$Geography_Name <- "region"
#------------------------------------------------------------------------------------
division <- get_acs(survey="acs5", year=2018, geography =
"division",
show_call = TRUE,output="wide", variables = selvars)
division$Geography_Name <- "division"
#------------------------------------------------------------------------------------
state <- get_acs(survey="acs5", year=2018, geography = "state",
show_call = TRUE,output="wide", variables = selvars)
state$Geography_Name <- "state"
setwd("~/Desktop/tidycensus_work/output")
write.csv(state,"ACS1418_USA_State_1.csv")
#------------------------------------------------------------------------------------
county <- get_acs(survey="acs5", year=2018, geography = "county",
show_call = TRUE,output="wide", variables = selvars)
county$Geography_Name <- "county"
#------------------------------------------------------------------------------------
# County Subdivision isn't working ...returns an API error (unknown/unsupported
geography)
countysubdiv <- get_acs(survey="acs5", year=2018, geography = "county
subdivision",
show_call = TRUE,output="wide", variables = selvars)
countysubdiv$Geography_Name <- "countysubdiv"
#------------------------------------------------------------------------------------
# Pull just the tracts in Alameda County, California
tract <- get_acs(survey="acs5", year=2018, geography = "tract",
state="CA",
county="Alameda",show_call = TRUE,output="wide", variables
= selvars)
tract$Geography_Name <- "tract"
#------------------------------------------------------------------------------------
# Pull just the block groups in Alameda County, California
blockgroup<- get_acs(survey="acs5", year=2018, geography = "block
group", state="CA", county="Alameda",show_call =
TRUE,output="wide", variables = selvars)
blockgroup$Geography_Name <- "blockgroup"
#------------------------------------------------------------------------------------
place <- get_acs(survey="acs5", year=2018, geography = "place",
show_call = TRUE,output="wide", variables = selvars)
place$Geography_Name <- "place"
#------------------------------------------------------------------------------------
urban <- get_acs(survey="acs5", year=2018, geography = "urban
area",
show_call = TRUE,output="wide", variables = selvars)
urban$Geography_Name <- "urban"
#------------------------------------------------------------------------------------
congdist <- get_acs(survey="acs5", year=2018, geography =
"congressional district",
show_call = TRUE,output="wide", variables = selvars)
congdist$Geography_Name <- "congdist"
#------------------------------------------------------------------------------------
puma <- get_acs(survey="acs5", year=2018, geography = "public use
microdata area",
show_call = TRUE,output="wide", variables = selvars)
puma$TotalPop2 <- puma$TotalPop_E * 1.0
puma$Tally <- 1.0
puma$State <- substr(puma$GEOID,1,2)
puma$Geography_Name <- "puma"
pumas <- puma[order(puma$State,puma$GEOID),]
summary(pumas)
sum1 <- aggregate(pumas[,3:12],
by = list(pumas$State),
FUN = sum, na.rm=TRUE)
min1 <- aggregate(pumas[,3:12],
by = list(pumas$State),
FUN = min, na.rm=TRUE)
max1 <- aggregate(pumas[,3:12],
by = list(pumas$State),
FUN = max, na.rm=TRUE)
setwd("~/Desktop/tidycensus_work/output")
write.csv(sum1,"ACS1418_USA_PUMA_sum_by_State_1.csv")
write.csv(min1,"ACS1418_USA_PUMA_min_by_State_1.csv")
write.csv(max1,"ACS1418_USA_PUMA_max_by_State_1.csv")
write.csv(pumas,"ACS1418_USA_PUMA_All_1.csv")
sum2 <- pumas %>%
group_by(State) %>%
summarize_at("TotalPop_E",
list(name=sum))
#------------------------------------------------------------------------------------
csa <- get_acs(survey="acs5", year=2018, geography = "combined
statistical area",
show_call = TRUE,output="wide", variables = selvars)
csa$Geography_Name <- "csa"
#------------------------------------------------------------------------------------
msamisa <- get_acs(survey="acs5", year=2018, geography = "metropolitan
statistical area/micropolitan statistical area",
show_call = TRUE,output="wide", variables = selvars)
msamisa$Geography_Name <- "msamisa"
#------------------------------------------------------------------------------------
zcta <- get_acs(survey="acs5", year=2018, geography = "zcta",
show_call = TRUE,output="wide", variables = selvars)
zcta$Geography_Name <- "zcta"
#------------------------------------------------------------------------------------
# State Senate and House aren't working ...returns an API error (unknown/unsupported
geography)
statesenate <- get_acs(survey="acs5", year=2018, geography = "state
legislative district (upper chamber)",
show_call = TRUE,output="wide", variables = selvars)
statesenate$Geography_Name <- "statesenate"
#------------------------------------------------------------------------------------
statehouse <- get_acs(survey="acs5", year=2018, geography = "state
legislative district (lower chamber)",
show_call = TRUE,output="wide", variables = selvars)
statehouse$Geography_Name <- "statehouse"
#------------------------------------------------------------------------------------
This concludes Example #4: “exploring tidycensus geography.”