1 선거통계 - 후보자 명부

후보자정보를 가져와서 다양한 비교분석 작업을 수행한다.

1.1 성남 분당구 을

“성남시 분당구 을”을 선구구를 대상으로 후보자 정보를 추출한다.

[1] "C"
[1] "LC_COLLATE=Korean_Korea.949;LC_CTYPE=Korean_Korea.949;LC_MONETARY=Korean_Korea.949;LC_NUMERIC=C;LC_TIME=Korean_Korea.949"

1.2 함수

“성남시 분당구 을”을 선구구를 대상으로 후보자 정보를 추출한 후 테스트를 통해 다음 단계로 넘어가기 위해서 함수를 제작한다. 즉, 특정 지역구정보를 넣게 되면 후보자 정보를 추출하게 되는 것이다. 중앙선거관리위원회, 선거통계시스템, 후보자 명부 시스템 분석결과 cityCode, sggCityCode 두개가 중요한 매개변수가 된다. 예를 들어, 서울특별시 종로구의 경우 cityCode, sggCityCode가 각각 다음과 같다.

  • cityCode: 1100
  • sggCityCode: 2110101
get_candidate_info <- function(cityCode, sgg_CityCode) {
  
  Sys.setlocale("LC_ALL", "C")
  
  candidate_url <- glue::glue("http://info.nec.go.kr/electioninfo/electionInfo_report.xhtml?electionId=0020200415&requestURI=%2FWEB-INF%2Fjsp%2Felectioninfo%2F0020200415%2Fcp%2Fcpri03.jsp&topMenuId=CP&secondMenuId=CPRI03&menuId=CPRI03&statementId=CPRI03_%232&electionCode=2&cityCode={cityCode}&sggCityCode={sgg_CityCode}&proportionalRepresentationCode=0&townCode=-1&dateCode=0&x=31&y=9")
  
  candidate_html <- read_html(candidate_url)
  
  candidate_dat <- candidate_html %>% 
    html_node('table') %>% 
    html_table(fill = TRUE)
  
  Sys.setlocale("LC_ALL", "Korean")
  
  candidate_df <- candidate_dat %>% 
    janitor::clean_names() %>% 
    slice(2:n()) %>% 
    names
  
  candidate_df <- candidate_dat %>% 
    janitor::clean_names() %>% 
    slice(2:n()) %>% 
    set_names(c("선거구명", "사진", "기호", "정당명", "성명", "성별", 
                "생년월일_연령", "주소", "직업", "학력", "경력", "재산", 
                "병역", "납부액", "체납액", "현체납액", 
                "전과", "입후보횟수")) %>% 
    separate(생년월일_연령, into=c("생년월일", "연령"), sep="\\(") %>% 
    mutate(`연령` = parse_number(`연령`),
           재산 = parse_number(재산),
           납부액 = parse_number(납부액),
           체납액 = parse_number(체납액),
           현체납액 = parse_number(현체납액),
           전과 = str_remove(전과, "건"),
           입후보횟수 = parse_number(입후보횟수)) %>% 
    mutate(전과 = ifelse(전과 == "없음", 0, 전과) %>% as.integer) %>% 
    mutate(병역 = case_when(str_detect(병역, "마친사람") ~ "병필",
                            str_detect(병역, "아니한") ~ "미필",
                            str_detect(병역, "비대상") ~ "여성"))
  
  return(candidate_df)
}

get_candidate_info(1100, 2110101) %>% 
  tbl_df
# A tibble: 12 x 19
   선거구명 사진  기호  정당명 성명  성별  생년월일  연령 주소  직업  학력 
   <chr>    <chr> <chr> <chr>  <chr> <chr> <chr>    <dbl> <chr> <chr> <chr>
 1 종로구   ""    1     더불어민주~ 이낙연(~ 남    1952.12~    67 서울특별~ 정당인~ 서울대학~
 2 종로구   ""    2     미래통합당~ 황교안(~ 남    1957.04~    63 서울특별~ 미래통합~ 성균관대~
 3 종로구   ""    7     우리공화당~ 한민호(~ 남    1962.01~    58 서울특별~ 정당인~ 성균관대~
 4 종로구   ""    8     민중당 오인환(~ 남    1973.01~    47 서울특별~ 정당인~ 경희대학~
 5 종로구   ""    9     가자!평화~ 이정희(~ 여    1964.10~    55 서울특별~ 가자평화~ 고려대학~
 6 종로구   ""    10    공화당 신동욱(~ 남    1968.01~    52 서울특별~ 정당인~ 서울벤처~
 7 종로구   ""    11    국가혁명배~ 박준영(~ 남    1937.02~    83 서울특별~ 국제정치~ 서울대학~
 8 종로구   ""    12    국민새정당~ 백병찬(~ 남    1956.04~    64 서울특별~ 국민새정~ 미기재~
 9 종로구   ""    13    기독자유통~ 양세화(~ 여    1982.02~    38 경기도 ~ 정당인~ 강원관광~
10 종로구   ""    14    민중민주당~ 박소현(~ 여    1991.02~    29 인천광역~ 정당인~ 고려대학~
11 종로구   ""    15    한나라당~ 김형석(~ 남    1966.04~    53 서울특별~ 방송통신~ 한국방송~
12 종로구   ""    16    무소속 김용덕(~ 남    1951.01~    69 전라북도~ 농업  군장대학~
# ... with 8 more variables: 경력 <chr>, 재산 <dbl>, 병역 <chr>, 납부액 <dbl>,
#   체납액 <dbl>, 현체납액 <dbl>, 전과 <int>, 입후보횟수 <dbl>

1.3 cityCode, sggCityCode

cityCode, sggCityCode 코드를 찾아야 나머지 분석작업을 자동화시킬 수 있다.

## 시도코드
cityCode <- tribble(~"cityCode", ~"cityName",
                    "1100", "서울특별시", 
                    "2600", "부산광역시", 
                    "2700", "대구광역시", 
                    "2800", "인천광역시", 
                    "2900", "광주광역시", 
                    "3000", "대전광역시", 
                    "3100", "울산광역시", 
                    "5100", "세종특별자치시", 
                    "4100", "경기도", 
                    "4200", "강원도", 
                    "4300", "충청북도", 
                    "4400", "충청남도", 
                    "4500", "전라북도", 
                    "4600", "전라남도", 
                    "4700", "경상북도", 
                    "4800", "경상남도", 
                    "4900", "제주특별자치도") 

## 시군구코드
### 서울특별시
sgg_서울 <- tribble(~"sggCityCode", ~"sggCityName",
                   "2110101", "종로구", 
                   "2110402", "중구성동구갑", 
                   "2110201", "중구성동구을", 
                   "2110301", "용산구", 
                   "2110501", "광진구갑", 
                   "2110502", "광진구을", 
                   "2110601", "동대문구갑", 
                   "2110602", "동대문구을", 
                   "2110701", "중랑구갑", 
                   "2110702", "중랑구을", 
                   "2110801", "성북구갑", 
                   "2110802", "성북구을", 
                   "2110901", "강북구갑", 
                   "2110902", "강북구을", 
                   "2111001", "도봉구갑", 
                   "2111002", "도봉구을", 
                   "2111101", "노원구갑", 
                   "2111102", "노원구을", 
                   "2111103", "노원구병", 
                   "2111201", "은평구갑", 
                   "2111202", "은평구을", 
                   "2111301", "서대문구갑", 
                   "2111302", "서대문구을", 
                   "2111401", "마포구갑", 
                   "2111402", "마포구을", 
                   "2111501", "양천구갑", 
                   "2111502", "양천구을", 
                   "2111601", "강서구갑", 
                   "2111602", "강서구을", 
                   "2111603", "강서구병", 
                   "2111701", "구로구갑", 
                   "2111702", "구로구을", 
                   "2111801", "금천구", 
                   "2111901", "영등포구갑", 
                   "2111902", "영등포구을", 
                   "2112001", "동작구갑", 
                   "2112002", "동작구을", 
                   "2112101", "관악구갑", 
                   "2112102", "관악구을", 
                   "2112201", "서초구갑", 
                   "2112202", "서초구을", 
                   "2112301", "강남구갑", 
                   "2112302", "강남구을", 
                   "2112303", "강남구병", 
                   "2112401", "송파구갑", 
                   "2112402", "송파구을", 
                   "2112403", "송파구병", 
                   "2112501", "강동구갑", 
                   "2112502", "강동구을") 

### 부산광역시
sgg_부산 <- tribble(~"sggCityCode", ~"sggCityName",
                   "2260401", "중구영도구",
                   "2260201", "서구동구",
                   "2260501", "부산진구갑",
                   "2260502", "부산진구을",
                   "2260601", "동래구",
                   "2260701", "남구갑",
                   "2260702", "남구을",
                   "2260801", "북구강서구갑",
                   "2261301", "북구강서구을",
                   "2260902", "해운대구갑",
                   "2260903", "해운대구을",
                   "2261101", "사하구갑",
                   "2261102", "사하구을",
                   "2261201", "금정구",
                   "2261401", "연제구",
                   "2261501", "수영구",
                   "2261601", "사상구",
                   "2261002", "기장군")
  
### 대구광역시
sgg_대구 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2270101", "중구남구", 
                  "2270201", "동구갑", 
                  "2270202", "동구을", 
                  "2270301", "서구", 
                  "2270501", "북구갑", 
                  "2270502", "북구을", 
                  "2270601", "수성구갑", 
                  "2270602", "수성구을", 
                  "2270701", "달서구갑", 
                  "2270702", "달서구을", 
                  "2270703", "달서구병", 
                  "2270801", "달성군")

### 인천광역시
sgg_인천 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2280101", "중구강화군옹진군", 
                  "2280301", "동구미추홀구갑", 
                  "2280302", "동구미추홀구을", 
                  "2280402", "연수구갑", 
                  "2280403", "연수구을", 
                  "2280501", "남동구갑", 
                  "2280502", "남동구을", 
                  "2280601", "부평구갑", 
                  "2280602", "부평구을", 
                  "2280701", "계양구갑", 
                  "2280702", "계양구을", 
                  "2280802", "서구갑", 
                  "2280803", "서구을") 

### 광주광역시
sgg_광주 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2290302", "동구남구갑", 
                  "2290101", "동구남구을", 
                  "2290201", "서구갑", 
                  "2290202", "서구을", 
                  "2290401", "북구갑", 
                  "2290402", "북구을", 
                  "2290501", "광산구갑", 
                  "2290502", "광산구을")

### 대전광역시
sgg_대전 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2300101", "동구", 
                  "2300201", "중구", 
                  "2300301", "서구갑", 
                  "2300302", "서구을", 
                  "2300402", "유성구갑", 
                  "2300403", "유성구을", 
                  "2300501", "대덕구") 
                  
### 울산광역시
sgg_울산 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2310101", "중구", 
                  "2310201", "남구갑", 
                  "2310202", "남구을", 
                  "2310301", "동구", 
                  "2310401", "북구", 
                  "2310501", "울주군") 
  
### 세종특별자치시
sgg_세종 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2510101", "세종특별자치시갑",
                  "2510102", "세종특별자치시을")

### 경기도
sgg_경기 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2410101", "수원시갑",
                  "2410201", "수원시을",
                  "2410301", "수원시병",
                  "2410401", "수원시정",
                  "2410202", "수원시무",
                  "2410501", "성남시수정구",
                  "2410601", "성남시중원구",
                  "2410701", "성남시분당구갑",
                  "2410702", "성남시분당구을",
                  "2410801", "의정부시갑",
                  "2410802", "의정부시을",
                  "2410901", "안양시만안구",
                  "2411001", "안양시동안구갑",
                  "2411002", "안양시동안구을",
                  "2411101", "부천시갑",
                  "2411102", "부천시을",
                  "2411201", "부천시병",
                  "2411301", "부천시정",
                  "2411401", "광명시갑",
                  "2411402", "광명시을",
                  "2411501", "평택시갑",
                  "2411502", "평택시을",
                  "2411701", "동두천시연천군",
                  "2411801", "안산시상록구갑",
                  "2411802", "안산시상록구을",
                  "2411901", "안산시단원구갑",
                  "2411902", "안산시단원구을",
                  "2412001", "고양시갑",
                  "2412002", "고양시을",
                  "2412101", "고양시병",
                  "2412201", "고양시정",
                  "2412301", "의왕시과천시",
                  "2412501", "구리시",
                  "2412601", "남양주시갑",
                  "2412602", "남양주시을",
                  "2412603", "남양주시병",
                  "2412701", "오산시",
                  "2412901", "시흥시갑",
                  "2412902", "시흥시을",
                  "2413002", "군포시",
                  "2413101", "하남시",
                  "2413501", "용인시갑",
                  "2413701", "용인시을",
                  "2413602", "용인시병",
                  "2413702", "용인시정",
                  "2413202", "파주시갑",
                  "2413203", "파주시을",
                  "2413401", "이천시",
                  "2413801", "안성시",
                  "2413902", "김포시갑",
                  "2413903", "김포시을",
                  "2412801", "화성시갑",
                  "2412802", "화성시을",
                  "2412803", "화성시병",
                  "2414002", "광주시갑",
                  "2414003", "광주시을",
                  "2411602", "양주시",
                  "2414102", "포천시가평군",
                  "2413301", "여주시양평군")
  
### 강원도
sgg_강원 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2420101", "춘천시철원군화천군양구군갑", 
                  "2420102", "춘천시철원군화천군양구군을", 
                  "2420202", "원주시갑", 
                  "2420203", "원주시을", 
                  "2420301", "강릉시", 
                  "2420401", "동해시태백시삼척시정선군", 
                  "2420801", "속초시인제군고성군양양군", 
                  "2421402", "홍천군횡성군영월군평창군")
                    
### 충청북도
sgg_충북 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2430101", "청주시상당구", 
                  "2430201", "청주시서원구", 
                  "2430202", "청주시흥덕구", 
                  "2430601", "청주시청원구", 
                  "2430301", "충주시", 
                  "2430401", "제천시단양군", 
                  "2430701", "보은군옥천군영동군괴산군", 
                  "2431002", "증평군진천군음성군") 

### 충청남도
sgg_충남 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2440101", "천안시갑", 
                  "2440102", "천안시을", 
                  "2440103", "천안시병", 
                  "2440202", "공주시부여군청양군", 
                  "2440301", "보령시서천군", 
                  "2440402", "아산시갑", 
                  "2440403", "아산시을", 
                  "2440501", "서산시태안군", 
                  "2440901", "논산시계룡시금산군", 
                  "2441601", "당진시", 
                  "2441301", "홍성군예산군") 
  
### 전라북도
sgg_전북 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2450101", "전주시갑", 
                  "2450102", "전주시을", 
                  "2450201", "전주시병", 
                  "2450301", "군산시", 
                  "2450501", "익산시갑", 
                  "2450502", "익산시을", 
                  "2450701", "정읍시고창군", 
                  "2450801", "남원시임실군순창군", 
                  "2450902", "김제시부안군", 
                  "2451001", "완주군진안군무주군장수군") 

### 전라남도
sgg_전남 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2460101", "목포시", 
                  "2460201", "여수시갑", 
                  "2460202", "여수시을", 
                  "2460403", "순천시광양시곡성군구례군갑", 
                  "2460702", "순천시광양시곡성군구례군을", 
                  "2460601", "나주시화순군", 
                  "2462202", "담양군함평군영광군장성군", 
                  "2461201", "고흥군보성군장흥군강진군", 
                  "2461801", "해남군완도군진도군", 
                  "2462101", "영암군무안군신안군") 
  
### 경상북도
sgg_경북 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2470101", "포항시북구", 
                  "2470201", "포항시남구울릉군", 
                  "2470401", "경주시", 
                  "2470501", "김천시", 
                  "2470601", "안동시예천군", 
                  "2470701", "구미시갑", 
                  "2470702", "구미시을", 
                  "2470802", "영주시영양군봉화군울진군", 
                  "2470901", "영천시청도군", 
                  "2471002", "상주시문경시", 
                  "2471302", "경산시", 
                  "2471902", "군위군의성군청송군영덕군", 
                  "2471701", "고령군성주군칠곡군") 
                  
### 경상남도
sgg_경남 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2480101", "창원시의창구", 
                  "2480102", "창원시성산구", 
                  "2480201", "창원시마산합포구", 
                  "2480202", "창원시마산회원구", 
                  "2480401", "창원시진해구", 
                  "2480301", "진주시갑", 
                  "2480302", "진주시을", 
                  "2480501", "통영시고성군", 
                  "2480702", "사천시남해군하동군", 
                  "2480801", "김해시갑", 
                  "2480802", "김해시을", 
                  "2480901", "밀양시의령군함안군창녕군", 
                  "2481001", "거제시", 
                  "2481402", "양산시갑", 
                  "2481403", "양산시을", 
                  "2481901", "산청군함양군거창군합천군") 

### 제주
sgg_제주 <- tribble(~"sggCityCode", ~"sggCityName",
                  "2490101", "제주시갑", 
                  "2490102", "제주시을", 
                  "2490201", "서귀포시")

# 결합 ----------------------
sgg_강원 <- sgg_강원 %>% 
  mutate(cityCode = "4200")

sgg_경기 <- sgg_경기 %>% 
  mutate(cityCode = "4100")

sgg_경남 <- sgg_경남 %>% 
  mutate(cityCode = "4800")

sgg_경북 <- sgg_경북 %>% 
  mutate(cityCode = "4700")

sgg_광주 <- sgg_광주 %>% 
  mutate(cityCode = "2900")

sgg_대구 <- sgg_대구 %>% 
  mutate(cityCode = "2700")

sgg_대전 <- sgg_대전 %>% 
  mutate(cityCode = "3000")

sgg_부산 <- sgg_부산 %>% 
  mutate(cityCode = "2600")

sgg_서울 <- sgg_서울 %>% 
  mutate(cityCode = "1100")

sgg_세종 <- sgg_세종 %>% 
  mutate(cityCode = "5100")

sgg_울산 <- sgg_울산 %>% 
  mutate(cityCode = "3100")

sgg_인천 <- sgg_인천 %>% 
  mutate(cityCode = "2800")

sgg_전남 <- sgg_전남 %>% 
  mutate(cityCode = "4600")

sgg_전북 <- sgg_전북 %>% 
  mutate(cityCode = "4500")

sgg_제주 <- sgg_제주 %>% 
  mutate(cityCode = "4900")

sgg_충남 <- sgg_충남 %>% 
  mutate(cityCode = "4400")

sgg_충북 <- sgg_충북 %>% 
  mutate(cityCode = "4300")


sggCityCode <- bind_rows(sgg_강원,sgg_경기,sgg_경남,sgg_경북,sgg_광주,sgg_대구,sgg_대전, 
                         sgg_부산,sgg_서울,sgg_세종,sgg_울산,sgg_인천,sgg_전남,sgg_전북, 
                         sgg_제주,sgg_충남,sgg_충북)

full_code <- inner_join(cityCode, sggCityCode)

full_code
# A tibble: 253 x 4
   cityCode cityName   sggCityCode sggCityName 
   <chr>    <chr>      <chr>       <chr>       
 1 1100     서울특별시 2110101     종로구      
 2 1100     서울특별시 2110402     중구성동구갑
 3 1100     서울특별시 2110201     중구성동구을
 4 1100     서울특별시 2110301     용산구      
 5 1100     서울특별시 2110501     광진구갑    
 6 1100     서울특별시 2110502     광진구을    
 7 1100     서울특별시 2110601     동대문구갑  
 8 1100     서울특별시 2110602     동대문구을  
 9 1100     서울특별시 2110701     중랑구갑    
10 1100     서울특별시 2110702     중랑구을    
# ... with 243 more rows

1.4 코드+함수 테스트

서울특별시 종로구를 대상으로 cityCode로 1100, sggCityCode로 2110101을 get_candidate_info() 함수에 전달하여 제대로 데이터를 가져오는지 테스트한다.

1.6 처리결과 정제

전체 시도에 대해서 선거구별로 수집한 데이터를 살펴보고 정제한다.

# A tibble: 253 x 3
   시도명 선거구명                       n
   <chr>  <chr>                      <int>
 1 강원도 강릉시                         1
 2 강원도 동해시태백시삼척시정선군       1
 3 강원도 속초시인제군고성군양양군       1
 4 강원도 원주시갑                       1
 5 강원도 원주시을                       1
 6 강원도 춘천시철원군화천군양구군갑     1
 7 강원도 춘천시철원군화천군양구군을     1
 8 강원도 홍천군횡성군영월군평창군       1
 9 경기도 고양시갑                       1
10 경기도 고양시병                       1
# ... with 243 more rows

2 데이터 품질

2.1 시도별 확인

## 크롤링 선거구
### 서울특별시:49
precinct_서울 <- full_code %>% 
  filter(cityName == "서울특별시")

서울_list <- map2(precinct_서울$cityCode, precinct_서울$sggCityCode, safely_get_candidate_info)
서울_df <- map_df(서울_list, "result")
  
### 경기도:59
precinct_경기 <- full_code %>% 
  filter(cityName == "경기도")

경기_list <- map2(precinct_경기$cityCode, precinct_경기$sggCityCode, safely_get_candidate_info)
경기_df <- map_df(경기_list, "result")

### 부산:18
precinct_부산 <- full_code %>% 
  filter(cityName == "부산광역시")

부산_list <- map2(precinct_부산$cityCode, precinct_부산$sggCityCode, safely_get_candidate_info)
부산_df <- map_df(부산_list, "result")

### 경남:18
precinct_경남 <- full_code %>% 
  filter(cityName == "경상남도")

경남_list <- map2(precinct_경남$cityCode, precinct_경남$sggCityCode, safely_get_candidate_info)
경남_df <- map_df(경남_list, "result")

### 경북:13
precinct_경북 <- full_code %>% 
  filter(cityName == "경상북도")

경북_list <- map2(precinct_경북$cityCode, precinct_경북$sggCityCode, safely_get_candidate_info)
경북_df <- map_df(경북_list, "result")

### 인천:13
precinct_인천 <- full_code %>% 
  filter(cityName == "인천광역시")

인천_list <- map2(precinct_인천$cityCode, precinct_인천$sggCityCode, safely_get_candidate_info)
인천_df <- map_df(인천_list, "result")

### 대구:12
precinct_대구 <- full_code %>% 
  filter(cityName == "대구광역시")

대구_list <- map2(precinct_대구$cityCode, precinct_대구$sggCityCode, safely_get_candidate_info)
대구_df <- map_df(대구_list, "result")

### 충남:11
precinct_충남 <- full_code %>% 
  filter(cityName == "충청남도")

충남_list <- map2(precinct_충남$cityCode, precinct_충남$sggCityCode, safely_get_candidate_info)
충남_df <- map_df(충남_list, "result")

### 전남:10
precinct_전남 <- full_code %>% 
  filter(cityName == "전라남도")

전남_list <- map2(precinct_전남$cityCode, precinct_전남$sggCityCode, safely_get_candidate_info)
전남_df <- map_df(전남_list, "result")

### 전북:10
precinct_전북 <- full_code %>% 
  filter(cityName == "전라북도")

전북_list <- map2(precinct_전북$cityCode, precinct_전북$sggCityCode, safely_get_candidate_info)
전북_df <- map_df(전북_list, "result")

### 강원도:8
precinct_강원 <- full_code %>% 
  filter(cityName == "강원도")

강원_list <- map2(precinct_강원$cityCode, precinct_강원$sggCityCode, safely_get_candidate_info)
강원_df <- map_df(강원_list, "result")

### 광주:8
precinct_광주 <- full_code %>% 
  filter(cityName == "광주광역시")

광주_list <- map2(precinct_광주$cityCode, precinct_광주$sggCityCode, safely_get_candidate_info)
광주_df <- map_df(광주_list, "result")

### 충북:8
precinct_충북 <- full_code %>% 
  filter(cityName == "충청북도")

충북_list <- map2(precinct_충북$cityCode, precinct_충북$sggCityCode, safely_get_candidate_info)
충북_df <- map_df(충북_list, "result")

### 대전:7
precinct_대전 <- full_code %>% 
  filter(cityName == "대전광역시")

대전_list <- map2(precinct_대전$cityCode, precinct_대전$sggCityCode, safely_get_candidate_info)
대전_df <- map_df(대전_list, "result")

### 울산:6
precinct_울산 <- full_code %>% 
  filter(cityName == "울산광역시")

울산_list <- map2(precinct_울산$cityCode, precinct_울산$sggCityCode, safely_get_candidate_info)
울산_df <- map_df(울산_list, "result")

### 제주:3
precinct_제주 <- full_code %>% 
  filter(cityName == "제주특별자치도")

제주_list <- map2(precinct_제주$cityCode, precinct_제주$sggCityCode, safely_get_candidate_info)
제주_df <- map_df(제주_list, "result")

### 세종:2
precinct_세종 <- full_code %>% 
  filter(cityName == "세종특별자치시")

세종_list <- map2(precinct_세종$cityCode, precinct_세종$sggCityCode, safely_get_candidate_info)
세종_df <- map_df(세종_list, "result")

2.2 시도별 종합

## 원본 데이터
candidate_253_df <- bind_rows(강원_df, 경기_df, 경남_df, 경북_df, 광주_df, 대구_df, 
                              대전_df, 부산_df, 서울_df, 세종_df, 울산_df, 인천_df, 
                              전남_df, 전북_df, 제주_df, 충남_df, 충북_df) %>% tbl_df

candidate_253_df %>% 
  mutate(시도명 = str_extract(주소, "[가-힣].*?(?=\\s)")) %>% 
  filter(정당명 == "더불어민주당") %>% 
  count(시도명, 선거구명)

candidate_253_df %>% 
  write_rds("data/candidate_253_df.rds")

## 원본 데이터 + 시도명
강원_df <- 강원_df %>% mutate(시도명="강원도") %>% tbl_df %>% select(시도명, everything())
경기_df <- 경기_df %>% mutate(시도명="경기도") %>% tbl_df %>% select(시도명, everything())
경남_df <- 경남_df %>% mutate(시도명="경상남도") %>% tbl_df %>% select(시도명, everything())
경북_df <- 경북_df %>% mutate(시도명="경상북도") %>% tbl_df %>% select(시도명, everything())
광주_df <- 광주_df %>% mutate(시도명="광주광역시") %>% tbl_df %>% select(시도명, everything())
대구_df <- 대구_df %>% mutate(시도명="대구광역시") %>% tbl_df %>% select(시도명, everything())
대전_df <- 대전_df %>% mutate(시도명="대전광역시") %>% tbl_df %>% select(시도명, everything())
부산_df <- 부산_df %>% mutate(시도명="부산광역시") %>% tbl_df %>% select(시도명, everything())
서울_df <- 서울_df %>% mutate(시도명="서울특별시") %>% tbl_df %>% select(시도명, everything())
세종_df <- 세종_df %>% mutate(시도명="세종특별자치시") %>% tbl_df %>% select(시도명, everything())
울산_df <- 울산_df %>% mutate(시도명="울산광역시") %>% tbl_df %>% select(시도명, everything())
인천_df <- 인천_df %>% mutate(시도명="인천광역시") %>% tbl_df %>% select(시도명, everything())
전남_df <- 전남_df %>% mutate(시도명="전라남도") %>% tbl_df %>% select(시도명, everything())
전북_df <- 전북_df %>% mutate(시도명="전라북도") %>% tbl_df %>% select(시도명, everything())
제주_df <- 제주_df %>% mutate(시도명="제주특별자치도") %>% tbl_df %>% select(시도명, everything())
충남_df <- 충남_df %>% mutate(시도명="충청남도") %>% tbl_df %>% select(시도명, everything())
충북_df <- 충북_df %>% mutate(시도명="충청북도") %>% tbl_df %>% select(시도명, everything())

candidate_253_df <- bind_rows(강원_df, 경기_df, 경남_df, 경북_df, 광주_df, 대구_df, 
                              대전_df, 부산_df, 서울_df, 세종_df, 울산_df, 인천_df, 
                              전남_df, 전북_df, 제주_df, 충남_df, 충북_df) %>% tbl_df

candidate_253_df %>% 
  count(시도명, 선거구명)

candidate_253_df %>% 
  write_rds("data/candidate_253_df.rds")

4 지리정보 매칭

4.2 정당 공천 시각화

정당별로 총 253개 선거구 중에서 공천된 곳을 시각화 해보자. 미래통합당은 전라도 지역에 공천이 되지 않은 것으로 파악된다.

Reading layer `2020_21_elec_253_simple' from data source `C:\docs\election\data\shapefile\2020_21_elec_253_simple.json' using driver `GeoJSON'
Simple feature collection with 253 features and 4 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: 124.6098 ymin: 33.16123 xmax: 130.9175 ymax: 38.61369
epsg (SRID):    4326
proj4string:    +proj=longlat +datum=WGS84 +no_defs