성남통계 - 통계자료실에서 2018년 12월 31일 기준 2018년 기준 주민등록인구통계 원시자료와 2015년 기준 주민등록인구통계 원시자료 기준데이터로 성남시 인구통계 데이터 기준을 삼는다. 즉,
library(tidyverse)
library(readxl)
성남시_동명 <- c("연령", "성남시", "수정구", "신흥1동", "신흥2동", "신흥3동", "태평1동", "태평2동", "태평3동", "태평4동", "수진1동", "수진2동", "단대동", "산성동", "양지동", "복정동", "위례동", "신촌동", "고등동", "시흥동", "중원구", "성남동", "중앙동", "금광1동", "금광2동", "은행1동", "은행2동", "상대원1동", "상대원2동", "상대원3동", "하대원동", "도촌동", "분당구", "분당동", "수내1동", "수내2동", "수내3동", "정자동", "정자1동", "정자2동", "정자3동", "서현1동", "서현2동", "이매1동", "이매2동", "야탑1동", "야탑2동", "야탑3동", "판교동", "삼평동", "백현동", "금곡동", "구미1동", "구미동", "운중동")
수정구 <- c("신흥1동", "신흥2동", "신흥3동", "태평1동", "태평2동", "태평3동", "태평4동", "수진1동", "수진2동", "단대동", "산성동", "양지동", "복정동", "위례동", "신촌동", "고등동", "시흥동")
중원구 <- c("성남동", "중앙동", "금광1동", "금광2동", "은행1동", "은행2동", "상대원1동", "상대원2동", "상대원3동", "하대원동", "도촌동")
분당구 <- c("분당동", "수내1동", "수내2동", "수내3동", "정자동", "정자1동", "정자2동", "정자3동", "서현1동", "서현2동", "이매1동", "이매2동", "야탑1동", "야탑2동", "야탑3동", "판교동", "삼평동", "백현동", "금곡동", "구미1동", "구미동", "운중동")
## 2015년 12월 31일 기준
sn_2016 <- read_xlsx("data/post_mortem/2015년 기준 주민등록인구통계(성남시).xlsx", sheet="표4", skip=3)
sn_2016_dat <- sn_2016 %>%
select("...2", matches("계.*")) %>%
set_names(성남시_동명) %>%
slice(2:n()) %>%
filter(str_detect(연령, "[0-9]{1,3}\\s+?세|[0-9]{3}\\s?세이상")) %>%
mutate(연령 = parse_number(연령)) %>%
select(-성남시, -수정구, -중원구, -분당구)
sn_2016_df <- sn_2016_dat %>%
pivot_longer(cols = 신흥1동:운중동, names_to = "동명", values_to="인구수") %>%
mutate(연도="2016년") %>%
select(연도, everything())
sn_2016_df %>%
summarise(총인구수 = sum(인구수)) %>%
pull() == 971424 # 971,424
[1] TRUE
## 2018년 12월 31일 기준
sn_2019 <- read_xlsx("data/post_mortem/2018년 기준 주민등록인구통계(성남시).xlsx", sheet="표4. 읍면동 연령별", skip=3)
sn_2019_dat <- sn_2019 %>%
select("...1", matches("계.*")) %>%
set_names(성남시_동명) %>%
slice(2:n()) %>%
filter(str_detect(연령, "[0-9]{1,3}\\s+?세|[0-9]{3}\\s?세 이상")) %>%
mutate(연령 = parse_number(연령)) %>%
select(-성남시, -수정구, -중원구, -분당구)
sn_2019_df <- sn_2019_dat %>%
pivot_longer(cols = 신흥1동:운중동, names_to = "동명", values_to="인구수") %>%
mutate(연도="2019년") %>%
select(연도, everything())
sn_2019_df %>%
summarise(총인구수 = sum(인구수)) %>%
pull() == 954347 # 954,347
[1] TRUE
sn_demo %>%
group_by(연도) %>%
summarise(인구수 = sum(인구수)) %>%
spread(연도, 인구수) %>%
mutate(인구변화 = `2019년` - `2016년` ) %>%
mutate(변화율 = 인구변화 / `2019년` * 100)
# A tibble: 1 x 4
`2016년` `2019년` 인구변화 변화율
<dbl> <dbl> <dbl> <dbl>
1 971424 954347 -17077 -1.79
sn_demo %>%
group_by(연도, 구명) %>%
summarise(인구수 = sum(인구수)) %>%
spread(연도, 인구수) %>%
mutate(인구변화 = `2019년` - `2016년` ) %>%
mutate(변화율 = 인구변화 / `2019년` * 100)
# A tibble: 3 x 5
구명 `2016년` `2019년` 인구변화 변화율
<chr> <dbl> <dbl> <dbl> <dbl>
1 분당구 501889 495329 -6560 -1.32
2 수정구 219531 234133 14602 6.24
3 중원구 250004 224885 -25119 -11.2