1 데이터셋: 분당을

  • 제20대 총선(2016년)
    • 범민주당 = 민주당(김병욱)
    • 범미통당 = 미통당 + 무소속(임태희)
  • 제21대 총선(2020년)
    • 범민주당 = 민주당 + 정의당 + 무소속(이나영)
    • 범미통당 = 미통당(김민수) + 우리공화당
library(tidyverse)
library(readxl)

## 21대 분당구을

동별_2020 <- read_excel("data/[제21대_국회의원선거]_개표단위별_개표결과.xlsx", sheet = "Sheet1", skip = 4) %>% 
  set_names(c("읍면동명", "투표구명", "선거인수", "투표수", "민주당", "미통당", "정의당", "...8", "우공당", "민중당", "배금당", "무소속", "계", "...14", "...15")) %>% 
    select("읍면동명", "투표구명", "선거인수", "투표수", "민주당", "미통당", "정의당", "우공당", "민중당", "배금당", "무소속")

동별_2020_dat <- 동별_2020 %>% 
  filter(투표구명 == "소계") %>% 
  select(-투표구명) %>% 
  mutate(선거인수 = parse_number(선거인수),
         투표수   = parse_number(투표수),
         민주당   = parse_number(민주당),
         미통당   = parse_number(미통당),
         정의당   = parse_number(정의당),
         우공당   = parse_number(우공당),
         민중당   = parse_number(민중당),
         무소속   = parse_number(무소속),
         배금당   = parse_number(배금당))

동별_2020_기타 <- 동별_2020 %>% 
  filter(is.na(투표구명), 
         !str_detect(읍면동명, "합계|잘못")) %>% 
  mutate(선거인수 = parse_number(선거인수),
         투표수   = parse_number(투표수),
         민주당   = parse_number(민주당),
         미통당   = parse_number(미통당),
         정의당   = parse_number(정의당),
         우공당   = parse_number(우공당),
         민중당   = parse_number(민중당),
         무소속   = parse_number(무소속),
         배금당   = parse_number(배금당)) %>% 
  select(-투표구명) %>% 
  summarise(선거인수 = sum(선거인수),
            투표수   = sum(투표수),
            민주당   = sum(민주당),
            미통당   = sum(미통당),
            정의당   = sum(정의당),
            우공당   = sum(우공당),
            민중당   = sum(민중당),
            배금당   = sum(배금당),
            무소속   = sum(무소속)) %>% 
  mutate(읍면동명 = "관외 등")

동별_2020_df <- bind_rows(동별_2020_dat, 동별_2020_기타) %>% 
  mutate(선거 = "제21대")

## 20대 분당구을

동별_2016 <- read_excel("data/[제20대_국회의원선거]_개표단위별_개표결과.xlsx", sheet = "Sheet1", skip = 86) %>% 
  set_names(c("읍면동명", "투표구명", "선거인수", "투표수", "미통당", "민주당", "..7", "국민의당", "민중당", "무소속", "계", "...14", "...15")) %>% 
    select("읍면동명", "투표구명", "선거인수", "투표수", "민주당", "미통당", "국민의당", "무소속")

동명 <- 동별_2016 %>% 
  select(투표구명) %>% 
  filter(str_detect(투표구명, "제1투")) %>% 
  mutate(읍면동명 = str_remove(투표구명, "제1투")) %>% 
  select(읍면동명)

동별_2016_dat <- 동별_2016 %>% 
  filter(투표구명 == "소계") %>% 
  select(-읍면동명, -투표구명) %>% 
  mutate(선거인수 = parse_number(선거인수),
         투표수   = parse_number(투표수),
         민주당   = parse_number(민주당),
         미통당   = parse_number(미통당),
         국민의당   = parse_number(국민의당),
         무소속   = parse_number(무소속)) %>% 
  bind_cols(동명)

동별_2016_기타 <- 동별_2016 %>% 
  filter(str_detect(투표구명, "거소|관외|국외")) %>% 
  mutate(선거인수 = parse_number(선거인수),
         투표수   = parse_number(투표수),
         민주당   = parse_number(민주당),
         미통당   = parse_number(미통당),
         국민의당   = parse_number(국민의당),
         무소속   = parse_number(무소속)) %>% 
  select(-읍면동명) %>% 
  summarise(선거인수 = sum(선거인수),
         투표수   = sum(투표수),
         민주당   = sum(민주당),
         미통당   = sum(미통당),
         국민의당   = sum(국민의당),
         무소속   = sum(무소속)) %>% 
  mutate(읍면동명 = "관외 등")

동별_2016_df <- bind_rows(동별_2016_dat, 동별_2016_기타 ) %>% 
  mutate(선거 = "제20대") %>% 
  select(선거, 읍면동명, everything())

## 21대 20대 분당구을 비교

동별_2016_raw <- 동별_2016_df %>% 
  mutate(범미통당 = 무소속 + 미통당) %>% 
  select(선거, 읍면동명, 선거인수, 투표수, 범민주당=민주당, 범미통당)

동별_2020_raw <- 동별_2020_df %>% 
  mutate(범민주당 = 민주당 + 정의당 + 무소속,
         범미통당 = 미통당 + 우공당) %>% 
  select(선거, 읍면동명, 선거인수, 투표수, 범민주당, 범미통당)


분당을 <- bind_rows(동별_2016_raw, 동별_2020_raw) %>% 
  mutate(범민주_득표율 = 범민주당 / 투표수,
         범미통_득표율 = 범미통당 / 투표수)

1.1 동별 테이블