Kristine Vorwerk and Brough Morris
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
polls.16 <- read.csv("http://projects.fivethirtyeight.com/general-model/president_general_polls_2016.csv")
poll_by_grade <- polls.16 %>%
select(grade, state, adjpoll_trump) %>%
filter(state == "U.S.") %>%
filter(grade != "") %>%
group_by(grade) %>%
summarize(number = n(), avg_trump = mean(adjpoll_trump), error = 1/sqrt(n()))
poll_by_grade
## # A tibble: 9 × 4
## grade number avg_trump error
## <fctr> <int> <dbl> <dbl>
## 1 A 87 42.72581 0.10721125
## 2 A- 1215 38.89732 0.02868877
## 3 A+ 114 42.93875 0.09365858
## 4 B 162 42.84969 0.07856742
## 5 B- 96 44.07257 0.10206207
## 6 B+ 105 42.68811 0.09759001
## 7 C 3 41.95996 0.57735027
## 8 C- 126 43.27857 0.08908708
## 9 C+ 546 43.87407 0.04279605
limits <- aes(ymax = avg_trump + error*100, ymin = avg_trump - error*100)
ggplot(poll_by_grade, aes(x=grade, y=avg_trump, fill = grade))+
geom_bar(stat="Identity") +
theme(legend.position = "none") +
xlab("Poll Grade") +
ylab("Percent Trump") +
ylim(0, 70) +
geom_errorbar(limits, width = 0.25) +
geom_hline(aes(yintercept = 47))
## Warning: Removed 1 rows containing missing values (geom_errorbar).