1 데이터1

제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
)

3 EDA

congressman_info_raw <- 
  read_rds("data/congressman/congressman_info_tbl.rds")

congressman_tbl <- congressman_info_raw %>% 
  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

4 SNS

4.1 데이터 정제

congressman_tbl <- 
  read_rds("data/congressman/congressman_info_tbl.rds")

congressman_id_tbl <- congressman_tbl %>% 
  select(의원명, 소속, sns) %>% 
  mutate(정당 = str_extract(소속, pattern = "[^(]*")) %>% 
  mutate(정당 = case_when(의원명 == "유정주" ~ "더불어민주당",
                           의원명 == "윤미향" ~ "무소속",
                           의원명 == "최승재" ~ "국민의힘",
                           의원명 == "강병원" ~ "더불어민주당",
                           의원명 == "권칠승" ~ "더불어민주당",
                           의원명 == "박병석" ~ "더불어민주당",
                           의원명 == "서동용" ~ "더불어민주당",
                           의원명 == "유기홍" ~ "더불어민주당",
                           의원명 == "정진석" ~ "국민의힘",
                           TRUE ~ 정당)) %>% 
  mutate(id = glue::glue("{의원명}_{정당}")) %>% 
  select(id, 의원명, 정당, sns)

congressman_sns_tbl <- congressman_id_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")

4.2 SNS 요약표

library(gt)

congressman_sns_tbl  <- 
  read_rds("data/congressman/congressman_sns_tbl.rds")

SNS_stat_gt <- congressman_sns_tbl %>% 
  count(사이트, sort =TRUE, name = "의원수") %>% 
  mutate(비율 = 의원수 /295) %>% 
  gt() %>% 
  tab_header(
      title = md("**&#9755; 제20대 대통령 선거 &#9754;**"),
      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