제21대 국회의원 - 마스터에서 현재 시점(2021년 11월 22일) 기준 제21대 국회의원 마스터를 작성한다.
library(reactable)
library(tidyverse)
library(rvest)
congressman_tbl <- read_rds("data/congressman/congressman_21_master.rds") %>%
arrange(의원명)
%>%
congressman_tbl select(-id, -대수, -지역, -선수, - 당선방법) %>%
arrange(desc(시도명)) %>%
reactable::reactable(
defaultColDef = colDef(
header = function(value) gsub(".", " ", value, fixed = TRUE),
cell = function(value) format(value, nsmall = 1),
align = "center",
minWidth = 30,
headerStyle = list(background = "#f7f7f8")
),columns = list(
colDef(minWidth = 50),
소속위원회 = colDef(minWidth = 100)
지역구명 =
),bordered = TRUE,
highlight = TRUE
)
congressman_info_raw <- read_rds("data/congressman/congressman_info_tbl.rds")
congressman_info_raw %>%
congressman_tbl <- select(의원명, 소속, sns) %>%
mutate(SNS수 = map_int(sns$SNS, ~nrow(.x)))
%>%
congressman_tbl mutate(정당 = str_extract(소속, pattern = "[^(]*")) %>%
group_by(정당) %>%
summarise(평균SNS = mean(SNS수))
# A tibble: 15 x 2
정당 평균SNS
<chr> <dbl>
1 국민의당 2
2 국민의힘 3.61
3 국회 3.33
4 기본소득당 6
5 더불어민주당 4.2
6 무소속 3.5
7 문화체육관광부 4
8 법무부 5
9 시대전환 5
10 열린민주당 3.33
11 정의당 4.17
12 통일부 6
13 행정안전부 3
14 환경부 5
15 <NA> 4.11
congressman_tbl <- read_rds("data/congressman/congressman_info_tbl.rds")
congressman_tbl %>%
congressman_id_tbl <- select(의원명, 소속, sns) %>%
mutate(정당 = str_extract(소속, pattern = "[^(]*")) %>%
mutate(정당 = case_when(의원명 == "유정주" ~ "더불어민주당",
== "윤미향" ~ "무소속",
의원명 == "최승재" ~ "국민의힘",
의원명 == "강병원" ~ "더불어민주당",
의원명 == "권칠승" ~ "더불어민주당",
의원명 == "박병석" ~ "더불어민주당",
의원명 == "서동용" ~ "더불어민주당",
의원명 == "유기홍" ~ "더불어민주당",
의원명 == "정진석" ~ "국민의힘",
의원명 TRUE ~ 정당)) %>%
mutate(id = glue::glue("{의원명}_{정당}")) %>%
select(id, 의원명, 정당, sns)
congressman_id_tbl %>%
congressman_sns_tbl <- mutate(SNS_ALL = map(sns$SNS, ~mutate(.x, new = glue::glue("{SNS}*{link}")))) %>%
mutate(SNS_name_link = map(SNS_ALL, ~select(.x, new))) %>%
group_by(id) %>%
unnest(SNS_name_link) %>%
select(의원명, new) %>%
separate(new, into = c("사이트", "링크"), sep = "\\*") %>%
ungroup() %>%
mutate(사이트 = ifelse(str_detect(사이트, "[배준영|우상호]TV"), "유튜브", 사이트)) %>%
mutate(사이트 = ifelse(str_detect(사이트, "카카오톡?채널"), "카카오톡채널", 사이트))
# congressman_sns_tbl %>%
# filter(의원명 =="구자근")
# filter(str_detect(사이트, "은메달|세바시|청년의"))
%>%
congressman_sns_tbl write_rds("data/congressman/congressman_sns_tbl.rds")
library(gt)
congressman_sns_tbl <- read_rds("data/congressman/congressman_sns_tbl.rds")
congressman_sns_tbl %>%
SNS_stat_gt <- count(사이트, sort =TRUE, name = "의원수") %>%
mutate(비율 = 의원수 /295) %>%
gt() %>%
tab_header(
title = md("**☛ 제20대 대통령 선거 ☚**"),
subtitle = md("*제21대 국회의원 SNS 활용현황*")
%>%
) tab_source_note(
source_note = md("기준 시점: 2021년 11월 22일")
%>%
) tab_options(
table.width = pct(100),
heading.background.color = "#1E61B0", # R logo 파란색
heading.title.font.size = "32px",
column_labels.background.color = "#F7F7F7", # R logo 회색
column_labels.font.weight = "bold",
stub.background.color = "#ffffff",
stub.font.weight = "bold"
%>%
) cols_align(
align = "center",
columns = c(사이트)
%>%
) fmt_number(
columns = 의원수,
decimals = 0
%>%
) fmt_percent(
columns = 비율,
decimals = 1
)
SNS_stat_gt
☛ 제20대 대통령 선거 ☚ | ||
---|---|---|
제21대 국회의원 SNS 활용현황 | ||
사이트 | 의원수 | 비율 |
페이스북 | 289 | 98.0% |
블로그 | 271 | 91.9% |
유튜브 | 228 | 77.3% |
인스타그램 | 160 | 54.2% |
트위터 | 98 | 33.2% |
공식홈페이지 | 38 | 12.9% |
카카오톡채널 | 30 | 10.2% |
후원회 | 15 | 5.1% |
밴드 | 11 | 3.7% |
카카오스토리 | 6 | 2.0% |
네이버TV | 4 | 1.4% |
네이버밴드 | 4 | 1.4% |
공식팬카페 | 3 | 1.0% |
네이버포스트 | 2 | 0.7% |
포스트 | 2 | 0.7% |
Daum블로그 | 1 | 0.3% |
브런치 | 1 | 0.3% |
빛나는 은메달 | 1 | 0.3% |
세바시 / 내게 소중한 세 가지 | 1 | 0.3% |
청년의꿈 | 1 | 0.3% |
기준 시점: 2021년 11월 22일 |
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com