library(tidyverse)
nonx <- c('78', '69', '66', '72', '60', '15', '02')
library(tigris); options(tigris_use_cache = TRUE, tigris_class = "sf")
us_house_districts <- tigris::congressional_districts(cb = TRUE) %>%
select(GEOID,STATEFP, CD115FP) %>%
left_join(tigris::states(cb = TRUE) %>%
data.frame() %>%
select(STATEFP, STUSPS)) %>%
sf::st_drop_geometry()
####
url <- 'https://docs.google.com/spreadsheets/d/1oRl7vxEJUUDWJCyrjo62cELJD2ONIVl-D9TSUKiK9jk/edit#gid=1178631925'
house <- gsheet::gsheet2tbl(url)
fix <- as.data.frame(cbind(colnames(house), as.character(house[1,])),
string_as_factor = FALSE) %>%
mutate(V1 = gsub('^X', NA, V1)) %>%
fill(V1) %>%
mutate(nw_cols = ifelse(is.na(V2), V1, paste0(V1, '_', V2)),
nw_cols = gsub(' ', '_', nw_cols))
colnames(house) <- fix$nw_cols
house <- house %>% slice(3:nrow(.))
keeps <- house[,!grepl('Pronun|ACS|Census|Survey', colnames(house))]
dailykos_pres_elections <- keeps [,c('District', 'Code', grep('President_[A-z]', colnames(house), value=T))] %>%
gather (key = election, value = percent, `2016_President_Clinton`:`2008_President_McCain`) %>%
mutate(election = gsub('President_', '', election),
percent = as.numeric(percent)) %>%
separate(Code, c('STUSPS', 'CD115FP')) %>%
separate(election, c('year', 'candidate'))%>%
mutate(CD115FP = ifelse(CD115FP == 'AL', '00', CD115FP), ## Here AL = at-large
share = ifelse(candidate %in% c('Trump', 'Romney', 'McCain'),
'republican',
'democrat')) %>%
select(-candidate) %>%
spread(share, percent) %>%
mutate(candidate = case_when(
(republican > democrat) & year == 2016 ~ 'Trump',
(republican > democrat) & year == 2012 ~ 'Romney',
(republican > democrat) & year == 2008 ~ 'McCain',
(republican < democrat) & year == 2016 ~ 'Clinton',
(republican < democrat) & year == 2012 ~ 'Obama',
(republican < democrat) & year == 2008 ~ 'Obama'
))%>%
mutate(party = ifelse(candidate %in% c('Trump', 'Romney', 'McCain'),
'republican',
'democrat'),
year = as.integer(year)) %>%
left_join(us_house_districts) %>%
mutate(CD115FP = as.integer(CD115FP),
STATEFP = as.integer(STATEFP))
dailykos_pres_elections$candidate[dailykos_pres_elections$District == 'Florida 7th' & dailykos_pres_elections$year == 2012] <- 'Obama'
dailykos_pres_elections$candidate[dailykos_pres_elections$District == 'Ohio 10th' & dailykos_pres_elections$year == 2008] <- 'Obama'
dailykos_pres_elections$candidate[dailykos_pres_elections$District == 'New York 22nd' & dailykos_pres_elections$year == 2008] <- 'McCain'
dailykos_pres_elections <- dailykos_pres_elections %>% select(4,9,1,2,10,3,5:8)
dailykos_pres_elections$District <- gsub(' ([0-9])?[0-9]..$| At-Large', '', dailykos_pres_elections$District)
colnames(dailykos_pres_elections) <- c('year', 'GEOID', 'state', 'state_abbrev', 'state_fips',
'district_code', 'democrat', 'republican', 'candidate', 'party')
uspol_dkos_returns_pres_cd <- dailykos_pres_elections
#Output
setwd("/home/jtimm/jt_work/GitHub/packages/uspoliticalextras/data")
usethis::use_data(uspol_dkos_returns_pres_cd, overwrite=TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.