고령 사회가 되면서 노인들을 위한 시설을 마련하는 일이 점점 더 중요해지고 있습니다. 노인들을 위한 시설을 마련하려면 우선 어느 지역에 노인들이 많이 살고 있는지 알아야 합니다. 지역별 연령대 비율을 분석해 노년층이 많은 지역이 어디인지 알아보겠습니다.
분석절차
1. 변수 검토 및 전처리
- 지역, 연령대
2. 변수 간 관계 분석
- 지역별 연령대 비율표 만들기, 그래프 만들기
지역 변수 검토 및 전처리하기
1. 변수 검토하기
class(welfare$code_region)
[1] "numeric"
table(welfare$code_region)
1 2 3 4 5 6 7
2486 3711 2785 2036 1467 1257 2922
2. 전처리
code_region 변수의 값은 7개 권역을 의미하는 지역 코드입니다. 먼저 코드북의 내용을 참조해 지역 코드 목록을 만들겠습니다. 그런 다음 지역 코드 목록과 welfare에 동시에 들어 있는 code_region 변수를 이용해 welfare에 지역명 변수를 추가하겠습니다.
# 지역 코드 목록 만들기
list_region <- data.frame(code_region = c(1:7),
region = c("서울",
"수도권(인천/경기",
"부산/경남/울산",
"대구/경북",
"대전/충남",
"강원/충북",
"광주/전남/전북/제주도"))
list_region
code_region region
1 1 서울
2 2 수도권(인천/경기
3 3 부산/경남/울산
4 4 대구/경북
5 5 대전/충남
6 6 강원/충북
7 7 광주/전남/전북/제주도
# 지역명 변수 추가
welfare <- left_join(welfare, list_region, id = "code_region")
Joining, by = "code_region"
welfare %>%
select(code_region, region) %>%
head
code_region region
1 1 서울
2 1 서울
3 1 서울
4 1 서울
5 1 서울
6 1 서울
지역별 연령대 비율 분석하기
연령대 변수 전처리는 앞에서 완료했으니 생략하고 변수 간 관계를 분석하겠습니다.
1. 지역별 연령대 비율표 만들기
지역별 연령대 비율표를 만들겠습니다. 지역 및 연령대별로 나눠 빈도를 구한 뒤, 각 지역의 전체 빈도로 나눠 비율을 구합니다.
region_ageg <- welfare %>%
group_by(region, ageg) %>%
summarise(n = n()) %>%
mutate(tot_group = sum(n)) %>%
mutate(pct = round(n/tot_group*100, 2))
head(region_ageg)
# A tibble: 6 x 5
# Groups: region [2]
region ageg n tot_group pct
<fct> <chr> <int> <int> <dbl>
1 강원/충북 middle 417 1257 33.2
2 강원/충북 old 555 1257 44.2
3 강원/충북 young 285 1257 22.7
4 광주/전남/전북/제주도 middle 947 2922 32.4
5 광주/전남/전북/제주도 old 1233 2922 42.2
6 광주/전남/전북/제주도 young 742 2922 25.4
count()를 이용하고, 비율을 구하는 mutate()를 하나로 합쳐서 아래와 같은 방식으로도 비율표를 만들 수 있습니다.
region_ageg <- welfare %>%
count(region, ageg) %>%
group_by(region) %>%
mutate(pct = round(n/sum(n)*100, 2))
head(region_ageg)
# A tibble: 6 x 4
# Groups: region [2]
region ageg n pct
<fct> <chr> <int> <dbl>
1 강원/충북 middle 417 33.2
2 강원/충북 old 555 44.2
3 강원/충북 young 285 22.7
4 광주/전남/전북/제주도 middle 947 32.4
5 광주/전남/전북/제주도 old 1233 42.2
6 광주/전남/전북/제주도 young 742 25.4
2. 그래프 만들기
앞에서 만든 표를 이용해 그래프를 만들겠습니다. 연령대 비율 막대를 서로 다른 색으로 표현하도록 aes의 fill 파라미터에 ageg를 지정합니다. 지역별로 비교하기 쉽도록 coord_flip()을 추가해서 그래프를 오른쪽으로 회전합니다.
ggplot(data = region_ageg, aes(x = region, y = pct, fill = ageg)) +
geom_col() +
coord_flip()
3. 노년층 비율 높은 순으로 막대 정렬하기
앞에서 만든 그래프는 막대가 밑에서부터 지역명 가나다 순으로 정렬되어 있습니다. 막대를 노년층 비율이 높은 순으로 정렬하겠습니다. 먼저 노년층 비율 순으로 지역명이 정렬된 변수를 만들어야 합니다. 앞에서 만든 표를 노년층 비율 순으로 정렬한 후 지역명만 추출해 변수를 만듭니다.
# 노년층 비율 내림차순 정렬
list_order_old <- region_ageg %>%
filter(ageg == "old") %>%
arrange(pct)
list_order_old
# A tibble: 7 x 4
# Groups: region [7]
region ageg n pct
<fct> <chr> <int> <dbl>
1 수도권(인천/경기 old 1109 29.9
2 서울 old 805 32.4
3 대전/충남 old 527 35.9
4 부산/경남/울산 old 1124 40.4
5 광주/전남/전북/제주도 old 1233 42.2
6 강원/충북 old 555 44.2
7 대구/경북 old 928 45.6
# 지역명 순서 변수 만들기
order <- list_order_old$region
order
[1] 수도권(인천/경기 서울 대전/충남
[4] 부산/경남/울산 광주/전남/전북/제주도 강원/충북
[7] 대구/경북
7 Levels: 강원/충북 광주/전남/전북/제주도 대구/경북 ... 수도권(인천/경기
지역명이 노년층 비율 순으로 정렬된 order 변수를 활용해 그래프를 만들겠습니다. 앞에서 사용한 그래프 생성 코드에 scale_x_discrete()를 추가하고 limits 파라미터에 order 변수를 지정하면 됩니다. 출력된 그래프를 보면 막대가 노년층 비율이 높은 순으로 정렬된 것을 볼 수 있습니다.
ggplot(data = region_ageg, aes(x = region, y = pct, fill = ageg)) +
geom_col() +
coord_flip()+
scale_x_discrete(limits = order)
4. 연령대 순으로 막대 색깔 나열하기
앞에서 만든 그래프는 막대 색깔이 young(초년), old(노년), middle(중년) 순으로 나열되어 있습니다. 이를 초년, 중년, 노년의 순으로 나열되도록 설정하겠습니다. 막대 색깔을 순서대로 나열하려면 fill 파라미터에 지정할 변수의 범주(levels) 순서를 지정하면 됩니다. 현재 ageg 변수는 character 타입이기 때문에 levels가 없습니다.
class(region_ageg$ageg)
[1] "character"
levels(region_ageg$ageg)
NULL
factor()를 이용해 ageg 변수를 factor 타입으로 변환하고, level 파라미터를 이용해 순서를 지정합니다.
region_ageg$ageg <- factor(region_ageg$ageg,
level = c("old", "middle", "young"))
class(region_ageg$ageg)
[1] "factor"
levels(region_ageg$ageg)
[1] "old" "middle" "young"
그래프 생성 코드를 다시 실행하면 막대 색깔이 연령대 순으로 나열되어 지역별 연령대 비율 구성을 쉽게 파악할 수 있습니다. 출력된 그래프를 보면 노년층 비율이 대구/경북, 강원/충북, 광주/전남/제주도 순으로 높다는 것을 알 수 있습니다.
ggplot(data = region_ageg, aes(x = region, y = pct, fill = ageg)) +
geom_col() +
coord_flip()+
scale_x_discrete(limits = order)
'R > 쉽게 배우는 R 데이터분석' 카테고리의 다른 글
국정원 트윗 텍스트 마이닝 (0) | 2020.03.14 |
---|---|
힙합 가사 텍스트 마이닝 (0) | 2020.03.10 |
한국인의 삶을 파악하라! -08 (0) | 2020.03.05 |
한국인의 삶을 파악하라! -07 (0) | 2020.03.04 |
한국인의 삶을 파악하라! -06 (0) | 2020.03.04 |