디지털 글쓰기

연령별 인구구조

데이터 과학자 학부모입장에서 챗GPT시대 대학에 들어갈 사람수를 살펴보자.

Author
Affiliation

1 인구수

행정안전부 주민등록 인구 및 세대현황 인구 데이터를 바탕으로 연도별 대학수학능력 시험 및 지원인원을 살펴보자. 2022년 12월말 기준 1세기준 인구수다.

Code
library(tidyverse)
library(readxl)
library(gt)
library(gtExtras)

pop_raw <- read_excel("data/suneung/202212_202212_연령별인구현황_연간.xlsx", skip=3)

pop_tbl <- pop_raw %>% 
  janitor::clean_names(ascii = FALSE) %>% 
  select(-연령구간인구수, -행정기관코드) %>% 
  pivot_longer(cols = `x0세`:`x100세_이상`, names_to = "나이", values_to = "인구수") %>% 
  rename(시도=행정기관, 총인구수=총_인구수) %>% 
  mutate(총인구수 = parse_number(총인구수),
         나이 = parse_number(나이),
         인구수 = parse_number(인구수))
Code
pop_tbl %>% 
  filter(시도 == "전국") %>% 
  ggplot(aes(x=나이, y=인구수)) +
    geom_col() +
    labs(title = "2022년 말 기준 연령별 인구수") +
    scale_y_continuous(labels = scales::comma) +
    geom_vline(xintercept = 19, color="red") +
    geom_label(label = "수능나이", aes(x = 24, y = 900000))

2 수능응시 출생년도

학교 입학·졸업 연도 계산기를 통해 수능응시생 출생년도를 확인할 수 있다.

한국 나이 및 한국 나이 8세 입학 기준.

2.1 2023년 시점기준

Code
go3 <- read_excel("data/suneung/202212_202212_연령별인구현황_연간.xlsx", sheet= "고3_2023년")

go3 %>% 
  gt::gt() %>% 
    gtExtras::gt_theme_538() %>% 
     gt_highlight_rows(
     rows = str_detect(학년, pattern = "고등학교 3학년"),
     fill = "lightgrey",
     bold_target_only = TRUE,
     target_col = everything()
   )  
학년 출생연도 그때 현재
초등학교 1학년 2016년 8세 8세
초등학교 2학년 2015년 9세 9세
초등학교 3학년 2014년 10세 10세
초등학교 4학년 2013년 11세 11세
초등학교 5학년 2012년 12세 12세
초등학교 6학년 2011년 13세 13세
중학교 1학년 2010년 14세 14세
중학교 2학년 2009년 15세 15세
중학교 3학년 2008년 16세 16세
고등학교 1학년 2007년 17세 17세
고등학교 2학년 2006년 18세 18세
고등학교 3학년 2005년 19세 19세
대학교 1학년 2004년 20세 20세

2.2 2027년 시점기준

Code
go3_2009 <- read_excel("data/suneung/202212_202212_연령별인구현황_연간.xlsx", sheet= "고3_2027년")

go3_2009 %>% 
  gt::gt() %>% 
    gtExtras::gt_theme_538() %>% 
     gt_highlight_rows(
     rows = str_detect(학년, pattern = "고등학교 3학년"),
     fill = "lightgrey",
     bold_target_only = TRUE,
     target_col = everything()
   )
학년 출생연도 그때 현재
초등학교 1학년 2020년 8세 4세
초등학교 2학년 2019년 9세 5세
초등학교 3학년 2018년 10세 6세
초등학교 4학년 2017년 11세 7세
초등학교 5학년 2016년 12세 8세
초등학교 6학년 2015년 13세 9세
중학교 1학년 2014년 14세 10세
중학교 2학년 2013년 15세 11세
중학교 3학년 2012년 16세 12세
고등학교 1학년 2011년 17세 13세
고등학교 2학년 2010년 18세 14세
고등학교 3학년 2009년 19세 15세
대학교 1학년 2008년 20세 16세

3 4년후 인구비교

Code
pop_ttl <- pop_tbl %>% 
  filter(시도 == "전국") %>% 
  mutate(나이_2027 = 나이 + 4) %>% 
  mutate(인구수_2027 = lag(인구수, n = 4)) %>% 
  drop_na() 

pop_now <- pop_ttl %>% 
  select(나이, 인구수) %>% 
  mutate(시점 = "현재")

pop_future <- pop_ttl %>% 
  select(나이 = 나이_2027, 인구수 = 인구수_2027)  %>% 
  mutate(시점 = "4년후")

proj_tbl <- bind_rows(pop_now, pop_future)

proj_tbl %>% 
  ggplot(aes(x = 나이, y = 인구수, fill = 시점)) +
    geom_col(position = "dodge") +
    scale_fill_manual(values = c("현재" = "gray20",
                                 "4년후" = "blue")) +
    theme(legend.position = "top") +
    ## 대입
    geom_vline(xintercept = 19, color="red") +
    geom_text(aes(x = 25, y = 900000, label = "수능나이", color = "red"), 
               show.legend = FALSE) +
    ## 정년
    geom_vline(xintercept = 60, color="red") +
    geom_text(aes(x = 67, y = 950000, label = "법적 정년", color = "red"), 
               show.legend = FALSE) +
    scale_y_continuous(labels = scales::comma) +
    labs(title = "대한민국 4년 후 인구구조 변화",
         subtitle = "2023년 현재와 4년후(2027년) 인구구조변화")