엑셀로 정리된 제19대 대통령선거 데이터를 가져온다.
# 팩키지 가져오기
library(tidyverse)
library(readxl)
# 데이터 가져오기
dat <- read_excel("data/20170510-19대선-투표구별개표자료.xlsx", sheet="19대선", skip=1)
# 칼럼명 정리
colnames_df <- c("시도명", "구시군명", "읍면동명", "투표구명", "선거인수", "투표수",
"더불어민주당\r\n문재인", "자유한국당\r\n홍준표", "국민의당\r\n안철수",
"바른정당\r\n유승민", "정의당\r\n심상정", "새누리당\r\n조원진",
"경제애국당\r\n오영국", "국민대통합당\r\n장성민", "늘푸른한국당\r\n이재오",
"민중연합당\r\n김선동", "한국국민당\r\n이경희", "홍익당\r\n윤홍식",
"무소속\r\n김민찬", "계", "무효투표수", "기권수")
dat <- dat %>%
set_names(colnames_df) %>%
rename(문재인=`더불어민주당\r\n문재인`,
홍준표=`자유한국당\r\n홍준표`,
안철수=`국민의당\r\n안철수`,
유승민=`바른정당\r\n유승민`,
심상정=`정의당\r\n심상정`) %>%
dplyr::select(`시도명`, `구시군명`, `읍면동명`, `투표구명`, `선거인수`, `투표수`,
`문재인`, `홍준표`, `안철수`,
`유승민`, `심상정`)
# 행 정리
df <- dat %>%
mutate(구시군명 = ifelse(시도명 == "전국", "합계", 구시군명)) %>%
mutate(읍면동명 = ifelse(구시군명 == "합계", "합계", 읍면동명)) %>%
mutate(투표구명 = ifelse(is.na(투표구명), 읍면동명, 투표구명)) %>%
filter(시도명 != "전국",
구시군명 != "합계",
읍면동명 !="합계",
투표구명 != "합계")
# 선거인수 합계: 42,479,710
# df %>%
# summarise(합계 = sum(선거인수)) %>%
# pull()
df %>%
filter(시도명 == "경기도") %>%
DT::datatable()
주요 대선 후보인 5명을 추려 경기도 대통령 후보 득표수를 표로 총계를 계산한다.
df %>%
filter(`시도명` == "경기도") %>%
group_by(`구시군명`) %>%
summarise(`문재인` = sum(`문재인`),
`홍준표` = sum(`홍준표`),
`안철수` = sum(`안철수`),
`유승민` = sum(`유승민`),
`심상정` = sum(`심상정`)) %>%
gather(`후보`, `득표수`, -`구시군명`) %>%
mutate(`후보` = factor(`후보`, levels=c("문재인", "홍준표", "안철수", "유승민", "심상정"))) %>%
mutate(`구시군명` = fct_reorder(`구시군명`, 득표수)) %>%
ggplot(aes(x=`구시군명`, y=`득표수`, fill=`후보`)) +
geom_col() +
coord_flip() +
theme_bw() +
theme(legend.position = "right") +
scale_y_continuous(labels=scales::comma) +
labs(x="", title=paste0("경기도", " 주요 후보별 득표수"))