data-raw/build_dailykos.R

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)
jaytimm/uspoliticalextras documentation built on March 17, 2020, 3:44 a.m.