인구수
행정안전부 주민등록 인구 및 세대현황 인구 데이터를 바탕으로 연도별 대학수학능력 시험 및 지원인원을 살펴보자. 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))
수능응시 출생년도
학교 입학·졸업 연도 계산기를 통해 수능응시생 출생년도를 확인할 수 있다.
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세 |
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세 |
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년) 인구구조변화")