Richard Sprague

My personal website

Aggregating local election results in R

2016-12-11


National and local news outlets report the results of the Presidential election at the state and county level, but that doesn’t tell me how my neighborhood voted. For that I’ll need the precinct-by-precinct results, which in my area is not reported. Can I calculate it myself? In R the answer is of course a big YES. Here’s how I did it.

First you obtain the full King County election results as a precinct-by-precint CSV file.

Filter the results to look for just the Mercer Island precincts, and further narrow down to just the US Presidential results.

#election2016<-read.csv("../../data/November_2016_ECanvass.csv")
election2016<-read.csv(file.path(Sys.getenv("BLOGDIR"),"data/November_2016_ECanvass.csv"))
mercerIsland2016<- election2016 %>% dplyr::filter(grepl("M-I",as.character(Precinct)))
mi.president.all<-dplyr::filter(mercerIsland2016,Race=="US President & Vice President")   %>% 
  dplyr::select(precinct=Precinct,candidate=CounterType,sum=SumOfCount)

#mi.president.all %>% group_by(candidate) %>% summarize(sum=sum(sum)) %>% arrange(desc(sum))

mi.president.all %>% dplyr::filter(candidate!="Times Counted" &
                              candidate!="Registered Voters") %>%
  dplyr::group_by(candidate) %>% 
  dplyr::summarize(sum=sum(sum)) %>%
  dplyr::arrange(desc(sum)) %>%
  dplyr::mutate(pct=sum/sum(sum)*100) %>%
  knitr::kable(digits=3)
candidate sum pct
Hillary Clinton & Tim Kaine 10721 69.244
Donald J. Trump & Michael R. Pence 3272 21.133
Gary Johnson & Bill Weld 578 3.733
Write-In 438 2.829
Times Blank Voted 290 1.873
Jill Stein & Ajamu Baraka 139 0.898
Darrell L. Castle & Scott N. Bradley 31 0.200
Gloria Estela La Riva & Eugene Puryear 7 0.045
Times Over Voted 4 0.026
Alyson Kennedy & Osborne Hart 3 0.019

Top Candidates

Sometimes it’s nice to compare just among votes case for the “top candidates”, like this:

topCandidates<-c("Donald J. Trump & Michael R. Pence",
                 "Gary Johnson & Bill Weld",
                 "Jill Stein & Ajamu Baraka",
                 "Hillary Clinton & Tim Kaine")

mi.president<-mi.president.all %>% dplyr::filter(candidate %in% topCandidates)
mi.president.all$candidate<-factor(mi.president$candidate)

mi.president.top<-mi.president %>% dplyr::group_by(candidate) %>%
  dplyr::summarize(sum=sum(sum)) %>%
  dplyr::arrange(desc(sum)) %>%
  dplyr::mutate(pct=sum/sum(sum)*100)

knitr::kable(mi.president.top,digits=3)
candidate sum pct
Hillary Clinton & Tim Kaine 10721 72.882
Donald J. Trump & Michael R. Pence 3272 22.243
Gary Johnson & Bill Weld 578 3.929
Jill Stein & Ajamu Baraka 139 0.945

and that’s it!