- 대한민국 인구분포 피라미드 그래프 그리기(pyramid)2023년 05월 29일 08시 03분 19초에 업로드 된 글입니다.작성자: r-code-for-data-analysis
통계청 사이트에서 연도별 대한민국 인구 데이터를 불러와서 나이대별, 성별로 전처리를 한 후 아래와 같이 그려보는 연습을 해 보았다.
일단 데이터와 동영상을 아래 첨부에 붙였다.
여기서 사용할 패키지는 "pyramid" 이다. 일본인이 만들었군.
http://minato.sip21c.org/swtips/Rgraphics.html#PYRAMID
그럼 어떻게 코딩을 했는지 살펴보자
1. 패키지 설치 및 불러오기
install.packages("pyramid") library(pyramid)
2. 데이터 불러오기
df <- read.csv("D:/R/data/population.csv") head(df) df %>% filter(By.gender %in% c("Male", "Female")) %>% filter(By.age != "Total") %>% select(-1) %>% na.omit() -> df1 colSums(is.na(df1))
3. 데이터 전처리 및 시각화
df1 %>% mutate(across(X1960:X2070, ~ as.numeric(.x))) %>% pivot_longer(cols = X1960:X2070 , names_to = "year", values_to = "population") %>% mutate(year = as.numeric(gsub("X", "", year))) %>% mutate(By.age = gsub(" Years old", "", By.age)) %>% mutate(By.age = gsub(" years old", "", By.age)) %>% mutate(By.age = gsub(" &", "", By.age)) %>% mutate(By.gender = as.factor(By.gender))%>% mutate(By.age = factor(By.age, levels = c("0-4", "5-9","10-14", "15-19", "20-24", "25-29", "30-34", "35-39", "40-44", "45-49", "50-54", "60-64", "65-69", "70-74", "75-79", "80 over"))) %>% filter(By.age != is.na(By.age)) %>% #filter(year==2020) %>% #select(-year) %>% pivot_wider(names_from = "By.gender", values_from = "population") %>% rename(males= Male, females = Female, ages = By.age) %>% select(males, females, ages, year) %>% mutate(males = males / 10000, females = females / 10000) %>% as.data.frame()->df2
4. 연도별 데이터 시각화 이미지를 반복문으로 저장함.
path <- "D:/R/images/population/" for ( x in 1960:2070) { df3 <- df2[df2$year == x,] pyramid(df3, main = paste0(x, "년 대한민국 인구 분포(1960~2070년) ", " 단위 : 만명@통계청 자료")) #png(file=paste0(path, x, ".png"), width=600, height=350) Sys.sleep(0.1) #dev.off() }
728x90반응형'데이터 분석' 카테고리의 다른 글
점탄성 특성 분석 (ANOVA, PCA분석) (0) 2023.05.30 [Machine Learning] 여러가지 모델 한번에 적용해서 분석하기 (0) 2023.05.29 Multi slit 구조에서 빛의 회절을 시뮤레이션 해 보기 (0) 2023.05.29 Optical Density(OD)에 따른 빛의 침투 깊이 시뮬레이션 (0) 2023.05.29 Correlation analysis (상관 관계 분석) (0) 2021.05.08 댓글