예비 후보 등록: 선거에 참여하고자 하는 개인은 먼저 ’예비 후보자’로 등록해야 합니다. 이 단계에서 그들은 법적으로 선거 운동을 할 수 있는 자격을 얻게 됩니다. 예비 후보 등록은 선거일로부터 몇 개월 전에 시작됩니다. 예비 후보자는 선거운동에 필요한 기본적인 활동을 할 수 있으나, 아직 정식 후보자로 선정되지 않았기 때문에 제한적인 활동만 가능합니다.
정식 후보자 선정: 선거일에 가까워지면, 각 정당은 자신들의 정식 후보자를 선정합니다. 이 과정은 당내 경선, 지명, 또는 다른 방식으로 이루어질 수 있습니다. 정식 후보자가 되면, 그 사람은 해당 선거구에서 그 정당을 대표하는 공식 후보가 됩니다.
차이점은 주로 이 두 단계에서 나타납니다:
활동 범위: 예비 후보는 선거운동 활동이 제한적이며, 주로 자신을 알리고 지지를 호소하는 데 중점을 둡니다. 반면 정식 후보는 보다 광범위한 선거 운동을 할 수 있습니다.
공식적 지위: 정식 후보는 해당 정당의 공식적인 지지를 받으며, 선거에서 승리할 경우 국회의원이 됩니다. 예비 후보는 아직 그 단계에 이르지 못한 상태입니다.
2 데이터셋
2.1 스크립트
코드
library(tidyverse)library(testthat)library(krvote)library(httr)library(jsonlite)# 변수 설정params<-list( serviceKey =Sys.getenv("DATA_GO_DECODE_KEY"), pageNo =1, numOfRows =10, resultType ="json", sgId ="20220309", sgTypecode =1, sggName ="대한민국", sdName ="전국")# GET 요청, params 사용response<-GET("http://apis.data.go.kr/9760000/PofelcddInfoInqireService/getPofelcddRegistSttusInfoInqire", query =params)candidates<-content(response, "text")|>fromJSON()%>%.$getPofelcddRegistSttusInfoInqire%>%.$item%>%as_tibble()|>select(giho, jdName, name, hanjaName, gender, birthday, age, addr)candidates#> # A tibble: 10 × 8#> giho jdName name hanjaName gender birthday age addr #> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> #> 1 1 더불어민주당 이재명 李在明 남 19641222 57 경기도 성남시 분…#> 2 10 신자유민주연합 김경재 金景梓 남 19421103 79 서울특별시 영등… #> 3 11 우리공화당 조원진 趙源震 남 19590107 63 대구광역시 달서… #> 4 12 진보당 김재연 金在姸 여 19801030 41 경기도 의정부시 …#> 5 13 통일한국당 이경희 李京熹 남 19740120 48 서울특별시 강남… #> 6 14 한류연합당 김민찬 金旻澯 남 19580204 64 서울특별시 동대… #> 7 2 국민의힘 윤석열 尹錫悅 남 19601218 61 서울특별시 서초… #> 8 3 정의당 심상정 沈相奵 여 19590220 63 경기도 고양시 덕…#> 9 4 국민의당 안철수 安哲秀 남 19620122 60 서울특별시 노원… #> 10 5 기본소득당 오준호 吳準鎬 남 19750620 46 경기도 안산시 상…
3 선거 마스터 데이터
3.1 선거코드 마스터
코드
# 변수 설정params<-list( pageNo =1, numOfRows =1000, resultType ="json", serviceKey =Sys.getenv("DATA_GO_DECODE_KEY"))# GET 요청response<-GET("http://apis.data.go.kr/9760000/CommonCodeService/getCommonSgCodeList", query =params)election_codes<-content(response, "text")|>fromJSON()%>%.$getCommonSgCodeList%>%.$item%>%as_tibble()election_codes|>write_csv("data/선거API_선거코드.csv")
3.2 선거구 마스터
3.2.1 국회의원 선거구
코드
# 쿼리 매개변수 설정params<-list( serviceKey =Sys.getenv("DATA_GO_DECODE_KEY"), pageNo =1, numOfRows =1000, resultType ="json", sgId ="20160413", sgTypecode =2)# GET 요청response<-GET("http://apis.data.go.kr/9760000/CommonCodeService/getCommonSggCodeList", query =params)precincts<-content(response, "text")|>fromJSON()%>%.$getCommonSggCodeList%>%.$item%>%as_tibble()precincts#> # A tibble: 253 × 8#> num sgId sgTypecode sggName sdName wiwName sggJungsu sOrder#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> #> 1 1 20160413 2 종로구 서울특별시 종로구 1 1 #> 2 2 20160413 2 중구성동구갑 서울특별시 성동구 1 2 #> 3 3 20160413 2 중구성동구을 서울특별시 중구 1 3 #> 4 4 20160413 2 용산구 서울특별시 용산구 1 4 #> 5 5 20160413 2 광진구갑 서울특별시 광진구 1 5 #> 6 6 20160413 2 광진구을 서울특별시 광진구 1 6 #> 7 7 20160413 2 동대문구갑 서울특별시 동대문구 1 7 #> 8 8 20160413 2 동대문구을 서울특별시 동대문구 1 8 #> 9 9 20160413 2 중랑구갑 서울특별시 중랑구 1 9 #> 10 10 20160413 2 중랑구을 서울특별시 중랑구 1 10 #> # ℹ 243 more rows
3.2.2 선거구 함수
코드
get_precincts<-function(sgId="20160413"){params<-list( serviceKey =Sys.getenv("DATA_GO_DECODE_KEY"), pageNo =1, numOfRows =1000, resultType ="json", sgId =sgId, sgTypecode =2)response<-GET("http://apis.data.go.kr/9760000/CommonCodeService/getCommonSggCodeList", query =params)precincts<-content(response, "text")|>fromJSON()%>%.$getCommonSggCodeList%>%.$item%>%as_tibble()return(precincts)}# write test case for get_precintstest_that("get_precincts returns a tibble", {expect_that(get_precincts("20160413"), is_a("tbl_df"))})#> Test passed 🌈test_that("get_precincts returns a tibble with 253 rows", {expect_that(get_precincts("20160413")|>nrow(), equals(253))})#> Test passed 🎊