위키백과 대한민국의 정당 지지율 데이터가 매주 정당여론조사를 바탕으로 업데이트 되고 있다. 이에 반해 현재(2020-03-28)시점 나무위키 틀:한국갤럽 2020년 정당 여론조사는 아직 체계적으로 여론조사결과가 업데이트 되고 있지는 못하고 있다. 한국갤럽 갤럽리포트에는 갤럽에서 조사한 정당별 지지율이 매주 올라오고 있으나 PDF 파일 형식으로 자료가 제공되고 있다.
위키백과 대한민국 정당 지지율 웹사이트에서 체계적으로 정리되고 있는 정당지지율 데이터를 rvest
팩키지로 가져온다. 2016년 1월부터 정당지지율 데이터가 정리되어 있다는 점에서 대한민국의 저력을 느낄 수 있다.
library(tidyverse)
library(rvest)
Sys.setlocale("LC_ALL", "C")
party_url <- "https://ko.wikipedia.org/wiki/대한민국의_정당_지지율"
party_html <- party_url %>%
read_html()
survey_lst <- party_html %>%
html_nodes("table") %>%
.[3:7] %>%
html_table(fill = TRUE)
Sys.setlocale("LC_ALL", "Korean")
(surv_2020_dat <- survey_lst %>%
.[[5]])
surv_2020_dat %>%
write_rds("data/surv_2020_dat.rds")
각 정당별로 여론조사회사별로 데이터를 준비하고 정제한 후 하나로 합쳐 각 정당별 지지율 데이터를 만들어 낸다.
surv_2020_dat <- read_rds("data/surv_2020_dat.rds")
surv_long_df <- surv_2020_dat %>%
janitor::clean_names() %>%
gather(정당, 지지율, -조사_기간)
## 더불어민주당
더불어민주당 <- surv_long_df %>%
filter(str_detect(정당, "더불어민주당")) %>%
filter(조사_기간 != "조사 기간") %>%
spread(정당, 지지율) %>%
rename(한국갤럽 = 더불어민주당,
주중리얼 = 더불어민주당_2,
주간리얼 = 더불어민주당_3) %>%
mutate(정당 = "더불어민주당")
## 자유한국당 --> 미래통합당
미래통합당 <- surv_long_df %>%
filter(str_detect(정당, "자유한국당")) %>%
filter(조사_기간 != "조사 기간") %>%
spread(정당, 지지율) %>%
rename(한국갤럽 = 자유한국당,
주중리얼 = 자유한국당_2,
주간리얼 = 자유한국당_3) %>%
mutate(정당 = "미래통합당")
## 정의당
정의당 <- surv_long_df %>%
filter(str_detect(정당, "정의당")) %>%
filter(조사_기간 != "조사 기간") %>%
spread(정당, 지지율) %>%
rename(한국갤럽 = 정의당,
주중리얼 = 정의당_2,
주간리얼 = 정의당_3) %>%
mutate(정당 = "정의당")
## 바른미래당 --> 민생당
민생당 <- surv_long_df %>%
filter(str_detect(정당, "바른미래당")) %>%
filter(조사_기간 != "조사 기간") %>%
spread(정당, 지지율) %>%
rename(한국갤럽 = 바른미래당,
주중리얼 = 바른미래당_2,
주간리얼 = 바른미래당_3) %>%
mutate(정당 = "민생당")
party_dat <- bind_rows(더불어민주당, 미래통합당, 정의당, 민생당)
party_dat %>%
DT::datatable()
지지율을 잘 분석할 수 있는 숫자형 자료로 데이터를 변환시킨다.
party_df <- party_dat %>%
select(조사기간 = 조사_기간, 갤럽=한국갤럽, 리얼미터=주간리얼, 정당) %>%
gather(조사기관, 지지율, -조사기간, -정당) %>%
# tbl_df %>%
mutate(지지율 = str_extract(지지율, "[0-9]{1,2}\\.[0-9]") %>% as.numeric) %>%
mutate(조사기간 = str_remove(조사기간, "2020년 ")) %>%
mutate(정당 = factor(정당, levels=c("더불어민주당", "미래통합당", "정의당", "민생당")))
party_df
조사기간 정당 조사기관 지지율
1 1월 1주 더불어민주당 갤럽 NA
2 1월 2주 더불어민주당 갤럽 40.0
3 1월 3주 더불어민주당 갤럽 39.0
4 1월 4주 더불어민주당 갤럽 NA
5 1월 5주 더불어민주당 갤럽 34.0
6 2월 1주 더불어민주당 갤럽 36.0
7 2월 2주 더불어민주당 갤럽 37.0
8 2월 3주 더불어민주당 갤럽 36.0
9 2월 4주 더불어민주당 갤럽 37.0
10 3월 1주 더불어민주당 갤럽 36.0
11 3월 2주 더불어민주당 갤럽 39.0
12 3월 3주 더불어민주당 갤럽 38.0
13 3월 4주 더불어민주당 갤럽 37.0
14 1월 1주 미래통합당 갤럽 NA
15 1월 2주 미래통합당 갤럽 20.0
16 1월 3주 미래통합당 갤럽 22.0
17 1월 4주 미래통합당 갤럽 NA
18 1월 5주 미래통합당 갤럽 21.0
19 2월 1주 미래통합당 갤럽 20.0
20 2월 2주 미래통합당 갤럽 21.0
21 2월 3주 미래통합당 갤럽 23.0
22 2월 4주 미래통합당 갤럽 21.0
23 3월 1주 미래통합당 갤럽 22.0
24 3월 2주 미래통합당 갤럽 22.0
25 3월 3주 미래통합당 갤럽 23.0
26 3월 4주 미래통합당 갤럽 22.0
27 1월 1주 정의당 갤럽 NA
28 1월 2주 정의당 갤럽 3.0
29 1월 3주 정의당 갤럽 3.0
30 1월 4주 정의당 갤럽 NA
31 1월 5주 정의당 갤럽 2.0
32 2월 1주 정의당 갤럽 2.0
33 2월 2주 정의당 갤럽 3.0
34 2월 3주 정의당 갤럽 NA
35 2월 4주 정의당 갤럽 6.0
36 3월 1주 정의당 갤럽 6.0
37 3월 2주 정의당 갤럽 6.0
38 3월 3주 정의당 갤럽 4.0
39 3월 4주 정의당 갤럽 5.0
40 1월 1주 민생당 갤럽 NA
41 1월 2주 민생당 갤럽 3.0
42 1월 3주 민생당 갤럽 3.0
43 1월 4주 민생당 갤럽 NA
44 1월 5주 민생당 갤럽 2.0
45 2월 1주 민생당 갤럽 2.0
46 2월 2주 민생당 갤럽 3.0
47 2월 3주 민생당 갤럽 4.0
48 2월 4주 민생당 갤럽 1.0
49 3월 1주 민생당 갤럽 1.0
50 3월 2주 민생당 갤럽 0.0
51 3월 3주 민생당 갤럽 1.0
52 3월 4주 민생당 갤럽 0.0
53 1월 1주 더불어민주당 리얼미터 41.8
54 1월 2주 더불어민주당 리얼미터 41.1
55 1월 3주 더불어민주당 리얼미터 38.4
56 1월 4주 더불어민주당 리얼미터 40.4
57 1월 5주 더불어민주당 리얼미터 38.5
58 2월 1주 더불어민주당 리얼미터 40.2
59 2월 2주 더불어민주당 리얼미터 39.9
60 2월 3주 더불어민주당 리얼미터 40.5
61 2월 4주 더불어민주당 리얼미터 41.0
62 3월 1주 더불어민주당 리얼미터 41.7
63 3월 2주 더불어민주당 리얼미터 41.5
64 3월 3주 더불어민주당 리얼미터 42.1
65 3월 4주 더불어민주당 리얼미터 NA
66 1월 1주 미래통합당 리얼미터 32.1
67 1월 2주 미래통합당 리얼미터 31.3
68 1월 3주 미래통합당 리얼미터 32.7
69 1월 4주 미래통합당 리얼미터 32.1
70 1월 5주 미래통합당 리얼미터 29.3
71 2월 1주 미래통합당 리얼미터 30.2
72 2월 2주 미래통합당 리얼미터 32.0
73 2월 3주 미래통합당 리얼미터 33.7
74 2월 4주 미래통합당 리얼미터 31.0
75 3월 1주 미래통합당 리얼미터 31.2
76 3월 2주 미래통합당 리얼미터 32.1
77 3월 3주 미래통합당 리얼미터 33.6
78 3월 4주 미래통합당 리얼미터 NA
79 1월 1주 정의당 리얼미터 5.5
80 1월 2주 정의당 리얼미터 NA
81 1월 3주 정의당 리얼미터 4.7
82 1월 4주 정의당 리얼미터 3.8
83 1월 5주 정의당 리얼미터 3.8
84 2월 1주 정의당 리얼미터 4.1
85 2월 2주 정의당 리얼미터 3.9
86 2월 3주 정의당 리얼미터 1.3
87 2월 4주 정의당 리얼미터 4.3
88 3월 1주 정의당 리얼미터 4.9
89 3월 2주 정의당 리얼미터 4.3
90 3월 3주 정의당 리얼미터 3.7
91 3월 4주 정의당 리얼미터 NA
92 1월 1주 민생당 리얼미터 4.6
93 1월 2주 민생당 리얼미터 4.7
94 1월 3주 민생당 리얼미터 3.9
95 1월 4주 민생당 리얼미터 4.1
96 1월 5주 민생당 리얼미터 3.5
97 2월 1주 민생당 리얼미터 3.3
98 2월 2주 민생당 리얼미터 2.6
99 2월 3주 민생당 리얼미터 3.0
100 2월 4주 민생당 리얼미터 4.1
101 3월 1주 민생당 리얼미터 4.1
102 3월 2주 민생당 리얼미터 2.1
103 3월 3주 민생당 리얼미터 1.4
104 3월 4주 민생당 리얼미터 NA
library(extrafont)
loadfonts()
party_g <- party_df %>%
ggplot(aes(x=조사기간, y=지지율, group=정당, color=정당)) +
geom_point() +
geom_line() +
facet_wrap(~조사기관) +
theme_light(base_family = "NanumGothic") +
labs(x="", y="정당지지율(%)", title="제21대 총선 전 2020년 정당지지율") +
scale_color_manual(values=c("blue", "#ff00a6", "yellow", "#007d08")) +
theme(legend.position = "top",
axis.text.x = element_text(angle = 270, hjust = 1),)
party_g