본문 바로가기
  • plotly로 바로쓰는 동적시각화 in R & 파이썬
데이터 전처리

행정구역별 연령별 학생 비율 구하기 in R - mutate_all, mutate_at, mutate_if

by 아참형인간 2022. 7. 13.
mutate.knit

mutate 파생 함수의 활용

tidyverse 생태계에서 사용자를 매료시키는 기능은 뭐니뭐니해도 dplyr를 사용한 데이터 전처리의 편리함일 것이다. dplyr에서 제공하는 각종 데이터 전처리 함수들은 SQL 언어를 사용하던 유저들은 바로 활용이 가능할 정도로 사용이 쉽다. SQL을 모르는 유저도 매우 쉽게 배우고 사용할 수 있다는 점에서 python에서도 dplyr를 유사하게 흉내 낸 패키지까지 등장할 정도로 사용이 쉽다.

dplyr에서 제공하는 데이터 전처리 함수들 중에 새로운 데이터 열을 만들어내는 함수가 mutate()함수이다. 대부분의 R 입문서에서도 mutate()를 다루고 있지만 mutate()에서 파생된 함수들까지 다루는 입문서는 찾아보기 어렵다. 여기서는 mutate()의 파생 함수들의 사용법을 알아보겠다.

mutate()는 변수 역할을 하는 새로운 열을 만들어 내는 함수이다. 하지만 하나의 열을 만들어내는데 하나의 산식이 필요하다. 만약 10개의 열을 만들어야 한다면 mutate()안에 10개의 열에 대한 수식을 나열해야 한다. 이렇게 많은 열을 만들어야 하는 경우를 위해 dplyr에서는 몇 개의 추가적 함수를 제공한다.

데이터 import

mutate() 파생 함수의 활용 방법을 알아보기 위해 열이 많은 데이터를 가져오도록 하겠다. 사용할 데이터는 ’주요-07 (유초)행정구역별 연령별 학생수(1999-2021)_220524y.xlsx’로 교육통계 서비스 홈페이지시도별 행정구별 연령별 학생수 에서 다운로드 받았다.

df_mutate <- read_xlsx('D:/R/data/주요-07 (유초)행정구역별 연령별 학생수(1999-2021)_220524y.xlsx', sheet = 'Sheet1', 
                       skip = 3, col_names = T, col_type = c(rep('text', 4), rep('numeric', 63)))

colnames(df_mutate) <- c('연도', '시도', '행정구역', '학제', '전체', '남자', '여자', paste0(rep(c('전체', '남자', '여자'), 20), '_', rep(2:21, each = 3), '세'))

glimpse(df_mutate)
## Rows: 41,985
## Columns: 67
## $ 연도      <chr> "1999", "1999", "1999", "1999", "1999", "1999", "1999", "1999"~
## $ 시도      <chr> "서울", "서울", "서울", "서울", "서울", "서울", "서울", "서울"~
## $ 행정구역  <chr> "종로구", "종로구", "종로구", "종로구", "종로구", "종로구", "종~
## $ 학제      <chr> "유치원", "초등학교", "중학교", "고등학교", "(일반계고)", "(전~
## $ 전체      <dbl> 1535, 11182, 6219, 24832, 19389, 5443, 605, 480, 44853, 1211, ~
## $ 남자      <dbl> 817, 5909, 3722, 12762, 9683, 3079, 375, 399, 23984, 643, 5848~
## $ 여자      <dbl> 718, 5273, 2497, 12070, 9706, 2364, 230, 81, 20869, 568, 5281,~
## $ 전체_2세  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ~
## $ 남자_2세  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ~
## $ 여자_2세  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ~
## $ 전체_3세  <dbl> 325, 0, 0, 0, 0, 0, 18, 0, 343, 141, 0, 0, 0, 0, 0, 0, 0, 141, ~
## $ 남자_3세  <dbl> 176, 0, 0, 0, 0, 0, 9, 0, 185, 80, 0, 0, 0, 0, 0, 0, 0, 80, 178~
## $ 여자_3세  <dbl> 149, 0, 0, 0, 0, 0, 9, 0, 158, 61, 0, 0, 0, 0, 0, 0, 0, 61, 176~
## $ 전체_4세  <dbl> 566, 0, 0, 0, 0, 0, 28, 0, 594, 456, 0, 0, 0, 0, 0, 0, 0, 456, ~
## $ 남자_4세  <dbl> 290, 0, 0, 0, 0, 0, 22, 0, 312, 246, 0, 0, 0, 0, 0, 0, 0, 246, ~
## $ 여자_4세  <dbl> 276, 0, 0, 0, 0, 0, 6, 0, 282, 210, 0, 0, 0, 0, 0, 0, 0, 210, 3~
## $ 전체_5세  <dbl> 644, 61, 0, 0, 0, 0, 43, 0, 748, 614, 60, 0, 0, 0, 0, 0, 0, 674~
## $ 남자_5세  <dbl> 351, 23, 0, 0, 0, 0, 28, 0, 402, 317, 22, 0, 0, 0, 0, 0, 0, 339~
## $ 여자_5세  <dbl> 293, 38, 0, 0, 0, 0, 15, 0, 346, 297, 38, 0, 0, 0, 0, 0, 0, 335~
## $ 전체_6세  <dbl> 0, 1817, 0, 0, 0, 0, 22, 0, 1839, 0, 1956, 0, 0, 0, 0, 0, 0, 19~
## $ 남자_6세  <dbl> 0, 964, 0, 0, 0, 0, 11, 0, 975, 0, 1014, 0, 0, 0, 0, 0, 0, 1014~
## $ 여자_6세  <dbl> 0, 853, 0, 0, 0, 0, 11, 0, 864, 0, 942, 0, 0, 0, 0, 0, 0, 942, ~
## $ 전체_7세  <dbl> 0, 1978, 0, 0, 0, 0, 10, 0, 1988, 0, 1990, 0, 0, 0, 0, 0, 0, 19~
## $ 남자_7세  <dbl> 0, 1042, 0, 0, 0, 0, 5, 0, 1047, 0, 1038, 0, 0, 0, 0, 0, 0, 103~
## $ 여자_7세  <dbl> 0, 936, 0, 0, 0, 0, 5, 0, 941, 0, 952, 0, 0, 0, 0, 0, 0, 952, 0~
## $ 전체_8세  <dbl> 0, 1833, 0, 0, 0, 0, 24, 0, 1857, 0, 1826, 0, 0, 0, 0, 0, 0, 18~
## $ 남자_8세  <dbl> 0, 951, 0, 0, 0, 0, 14, 0, 965, 0, 965, 0, 0, 0, 0, 0, 0, 965, ~
## $ 여자_8세  <dbl> 0, 882, 0, 0, 0, 0, 10, 0, 892, 0, 861, 0, 0, 0, 0, 0, 0, 861, ~
## $ 전체_9세  <dbl> 0, 1703, 0, 0, 0, 0, 20, 0, 1723, 0, 1750, 0, 0, 0, 0, 0, 0, 17~
## $ 남자_9세  <dbl> 0, 907, 0, 0, 0, 0, 11, 0, 918, 0, 954, 0, 0, 0, 0, 0, 0, 954, ~
## $ 여자_9세  <dbl> 0, 796, 0, 0, 0, 0, 9, 0, 805, 0, 796, 0, 0, 0, 0, 0, 0, 796, 0~
## $ 전체_10세 <dbl> 0, 1785, 0, 0, 0, 0, 19, 0, 1804, 0, 1688, 0, 0, 0, 0, 0, 0, 16~
## $ 남자_10세 <dbl> 0, 961, 0, 0, 0, 0, 9, 0, 970, 0, 894, 0, 0, 0, 0, 0, 0, 894, 0~
## $ 여자_10세 <dbl> 0, 824, 0, 0, 0, 0, 10, 0, 834, 0, 794, 0, 0, 0, 0, 0, 0, 794, ~
## $ 전체_11세 <dbl> 0, 1814, 47, 0, 0, 0, 22, 0, 1883, 0, 1756, 18, 0, 0, 0, 0, 0, ~
## $ 남자_11세 <dbl> 0, 955, 13, 0, 0, 0, 14, 0, 982, 0, 910, 7, 0, 0, 0, 0, 0, 917,~
## $ 여자_11세 <dbl> 0, 859, 34, 0, 0, 0, 8, 0, 901, 0, 846, 11, 0, 0, 0, 0, 0, 857,~
## $ 전체_12세 <dbl> 0, 187, 1885, 0, 0, 0, 22, 0, 2094, 0, 101, 1860, 0, 0, 0, 0, 2~
## $ 남자_12세 <dbl> 0, 104, 1157, 0, 0, 0, 11, 0, 1272, 0, 49, 854, 0, 0, 0, 0, 33,~
## $ 여자_12세 <dbl> 0, 83, 728, 0, 0, 0, 11, 0, 822, 0, 52, 1006, 0, 0, 0, 0, 243, ~
## $ 전체_13세 <dbl> 0, 4, 2092, 1, 1, 0, 27, 0, 2124, 0, 2, 2044, 0, 0, 0, 0, 299, ~
## $ 남자_13세 <dbl> 0, 2, 1243, 0, 0, 0, 17, 0, 1262, 0, 2, 866, 0, 0, 0, 0, 27, 89~
## $ 여자_13세 <dbl> 0, 2, 849, 1, 1, 0, 10, 0, 862, 0, 0, 1178, 0, 0, 0, 0, 272, 14~
## $ 전체_14세 <dbl> 0, 0, 2131, 218, 167, 51, 33, 0, 2382, 0, 0, 2124, 55, 42, 13, ~
## $ 남자_14세 <dbl> 0, 0, 1270, 109, 80, 29, 21, 0, 1400, 0, 0, 968, 35, 23, 12, 0,~
## $ 여자_14세 <dbl> 0, 0, 861, 109, 87, 22, 12, 0, 982, 0, 0, 1156, 20, 19, 1, 0, 2~
## $ 전체_15세 <dbl> 0, 0, 58, 7342, 6219, 1123, 32, 0, 7432, 0, 0, 61, 5428, 3037, ~
## $ 남자_15세 <dbl> 0, 0, 34, 3939, 3152, 787, 20, 0, 3993, 0, 0, 22, 3140, 1284, 1~
## $ 여자_15세 <dbl> 0, 0, 24, 3403, 3067, 336, 12, 0, 3439, 0, 0, 39, 2288, 1753, 5~
## $ 전체_16세 <dbl> 0, 0, 5, 8169, 6447, 1722, 59, 60, 8293, 0, 0, 2, 7953, 3498, 4~
## $ 남자_16세 <dbl> 0, 0, 4, 4162, 3149, 1013, 28, 48, 4242, 0, 0, 0, 5416, 1639, 3~
## $ 여자_16세 <dbl> 0, 0, 1, 4007, 3298, 709, 31, 12, 4051, 0, 0, 2, 2537, 1859, 67~
## $ 전체_17세 <dbl> 0, 0, 1, 7991, 6187, 1804, 42, 420, 8454, 0, 0, 1, 8073, 3640, ~
## $ 남자_17세 <dbl> 0, 0, 1, 4210, 3005, 1205, 25, 351, 4587, 0, 0, 1, 5002, 1866, ~
## $ 여자_17세 <dbl> 0, 0, 0, 3781, 3182, 599, 17, 69, 3867, 0, 0, 0, 3071, 1774, 12~
## $ 전체_18세 <dbl> 0, 0, 0, 1061, 350, 711, 51, 0, 1112, 0, 0, 0, 1375, 669, 706, ~
## $ 남자_18세 <dbl> 0, 0, 0, 322, 282, 40, 33, 0, 355, 0, 0, 0, 1286, 640, 646, 18,~
## $ 여자_18세 <dbl> 0, 0, 0, 739, 68, 671, 18, 0, 757, 0, 0, 0, 89, 29, 60, 44, 0, ~
## $ 전체_19세 <dbl> 0, 0, 0, 50, 18, 32, 33, 0, 83, 0, 0, 0, 163, 86, 77, 38, 0, 20~
## $ 남자_19세 <dbl> 0, 0, 0, 20, 15, 5, 18, 0, 38, 0, 0, 0, 158, 84, 74, 8, 0, 166,~
## $ 여자_19세 <dbl> 0, 0, 0, 30, 3, 27, 15, 0, 45, 0, 0, 0, 5, 2, 3, 30, 0, 35, 0, ~
## $ 전체_20세 <dbl> 0, 0, 0, 0, 0, 0, 42, 0, 42, 0, 0, 0, 11, 1, 10, 49, 0, 60, 0, ~
## $ 남자_20세 <dbl> 0, 0, 0, 0, 0, 0, 28, 0, 28, 0, 0, 0, 11, 1, 10, 5, 0, 16, 0, 0~
## $ 여자_20세 <dbl> 0, 0, 0, 0, 0, 0, 14, 0, 14, 0, 0, 0, 0, 0, 0, 44, 0, 44, 0, 0,~
## $ 전체_21세 <dbl> 0, 0, 0, 0, 0, 0, 58, 0, 58, 0, 0, 0, 2, 2, 0, 286, 0, 288, 0, ~
## $ 남자_21세 <dbl> 0, 0, 0, 0, 0, 0, 51, 0, 51, 0, 0, 0, 2, 2, 0, 59, 0, 61, 0, 0,~
## $ 여자_21세 <dbl> 0, 0, 0, 0, 0, 0, 7, 0, 7, 0, 0, 0, 0, 0, 0, 227, 0, 227, 0, 0,~

이 데이터는 열의 수가 총 67개인 데이터이다. 위의 데이터 구조를 보면 알겠지만 각 열은 연령별 전체 학생수, 남자, 여자 학생수를 나타내는데 5번부터 7번째열은 전체 합계에 해당하는 열이다. 이 데이터를 전체에 대한 비율로 바꾸어 보겠다.

전체에 대한 비율로 바꾸려면 전체 합계에 해당하는 수치로 각 연령별 학생수를 나누어 주어야 한다. 만약 단순히 mutate()를 사용해야 한다면 2세부터 21세까지의 전체, 남자, 여자에 해당하는 총 60개의 수식을 나열해야 한다. 이럴경우 대부분 ctrl+c ctrl+v를 사용하여 60개를 복사하고 연령을 나타내는 수를 바꾸어주는 형태로 60개의 수식을 만들것이다. 이러한 작업을 해 본 사람이라면 이 작업이 얼마나 많은 오류를 만들어 낼 수 있는지 알 것이다. 이런 경우에 사용하는 mutate() 파생 함수는 다음과 같다.

mutate_all

mutate_all()은 전체 열에 대해 동일한 수식을 적용하는 함수이다. mutate_all()에는 모든 열에 적용할 함수를 명기해야 한다. 단순히 평균이나 합계를 내는 경우에는 ‘mean’, ’sum’과 같은 함수명을 매개변수로 전달하면 된다. 하지만 이 mutate_all()을 ’df_mutate’에 적용시키면 다음과 같은 결과를 낸다. .

df_mutate_all <- df_mutate |> mutate_all(mean)

df_mutate_all |> head(10)
## # A tibble: 10 x 67
##     연도  시도 행정구역  학제  전체  남자  여자 전체_2세 남자_2세 여자_2세
##    <dbl> <dbl>    <dbl> <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>    <dbl>
##  1    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
##  2    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
##  3    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
##  4    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
##  5    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
##  6    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
##  7    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
##  8    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
##  9    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
## 10    NA    NA       NA    NA 9227. 4835. 4392.    0.260    0.137    0.123
## # ... with 57 more variables: 전체_3세 <dbl>, 남자_3세 <dbl>, 여자_3세 <dbl>,
## #   전체_4세 <dbl>, 남자_4세 <dbl>, 여자_4세 <dbl>, 전체_5세 <dbl>,
## #   남자_5세 <dbl>, 여자_5세 <dbl>, 전체_6세 <dbl>, 남자_6세 <dbl>,
## #   여자_6세 <dbl>, 전체_7세 <dbl>, 남자_7세 <dbl>, 여자_7세 <dbl>,
## #   전체_8세 <dbl>, 남자_8세 <dbl>, 여자_8세 <dbl>, 전체_9세 <dbl>,
## #   남자_9세 <dbl>, 여자_9세 <dbl>, 전체_10세 <dbl>, 남자_10세 <dbl>,
## #   여자_10세 <dbl>, 전체_11세 <dbl>, 남자_11세 <dbl>, 여자_11세 <dbl>, ...

위의 결과에서 보면 두 가지 이상한 점이 있다. 첫번째는 연도, 시도 등 문자열을 포함한 열은 NA로 채워져 있고 계산된 수치열은 열별로 모든 행이 같은 값을 가진다는 것이다. 첫 번째 문제는 문자열에 대해서는 평균을 구할수 없기 때문에 발생한 문제이다. 두 번째 문제는 mutate_all()의 적용 함수인 ’mean’은 열 방향으로 적용되는 함수이기 때문에 같은 열의 모든 행은 같은 값을 가지게 된다는 것이다.

첫 번째 문제는 다음과 같은 방법으로 해결할 수 있다.

df_mutate_all <- cbind(df_mutate |> select(1:4), 
      df_mutate |> select(-(1:4)) |> mutate_all(mean)
)

df_mutate_all |> head(10)
##    연도 시도 행정구역       학제     전체     남자    여자 전체_2세  남자_2세
## 1  1999 서울   종로구     유치원 9226.664 4834.613 4392.05  0.25995 0.1365726
## 2  1999 서울   종로구   초등학교 9226.664 4834.613 4392.05  0.25995 0.1365726
## 3  1999 서울   종로구     중학교 9226.664 4834.613 4392.05  0.25995 0.1365726
## 4  1999 서울   종로구   고등학교 9226.664 4834.613 4392.05  0.25995 0.1365726
## 5  1999 서울   종로구 (일반계고) 9226.664 4834.613 4392.05  0.25995 0.1365726
## 6  1999 서울   종로구 (전문계고) 9226.664 4834.613 4392.05  0.25995 0.1365726
## 7  1999 서울   종로구   특수학교 9226.664 4834.613 4392.05  0.25995 0.1365726
## 8  1999 서울   종로구   각종학교 9226.664 4834.613 4392.05  0.25995 0.1365726
## 9  1999 서울   종로구       소계 9226.664 4834.613 4392.05  0.25995 0.1365726
## 10 1999 서울     중구     유치원 9226.664 4834.613 4392.05  0.25995 0.1365726
##     여자_2세 전체_3세 남자_3세 여자_3세 전체_4세 남자_4세 여자_4세 전체_5세
## 1  0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
## 2  0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
## 3  0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
## 4  0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
## 5  0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
## 6  0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
## 7  0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
## 8  0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
## 9  0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
## 10 0.1233774  126.878  64.8937 61.98433 220.7301 113.9353 106.7948 302.8342
##    남자_5세 여자_5세 전체_6세 남자_6세 여자_6세 전체_7세 남자_7세 여자_7세
## 1  156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
## 2  156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
## 3  156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
## 4  156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
## 5  156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
## 6  156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
## 7  156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
## 8  156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
## 9  156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
## 10 156.8314 146.0027 558.2328 290.3588  267.874 600.4627 313.7101 286.7526
##    전체_8세 남자_8세 여자_8세 전체_9세 남자_9세 여자_9세 전체_10세 남자_10세
## 1  610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
## 2  610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
## 3  610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
## 4  610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
## 5  610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
## 6  610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
## 7  610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
## 8  610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
## 9  610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
## 10 610.6971 319.4187 291.2783 618.1809 323.8107 294.3702  623.8971  327.0914
##    여자_10세 전체_11세 남자_11세 여자_11세 전체_12세 남자_12세 여자_12세
## 1   296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
## 2   296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
## 3   296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
## 4   296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
## 5   296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
## 6   296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
## 7   296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
## 8   296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
## 9   296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
## 10  296.8057  630.2469  330.5552  299.6917  631.8402  331.1976  300.6426
##    전체_13세 남자_13세 여자_13세 전체_14세 남자_14세 여자_14세 전체_15세
## 1   643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
## 2   643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
## 3   643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
## 4   643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
## 5   643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
## 6   643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
## 7   643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
## 8   643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
## 9   643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
## 10  643.5511  337.4947  306.0564  654.8126  343.7299  311.0827  939.2604
##    남자_15세 여자_15세 전체_16세 남자_16세 여자_16세 전체_17세 남자_17세
## 1   493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
## 2   493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
## 3   493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
## 4   493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
## 5   493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
## 6   493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
## 7   493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
## 8   493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
## 9   493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
## 10  493.3877  445.8727  978.2483  513.9566  464.2917  973.5292  511.3996
##    여자_17세 전체_18세 남자_18세 여자_18세 전체_19세 남자_19세 여자_19세
## 1   462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
## 2   462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
## 3   462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
## 4   462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
## 5   462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
## 6   462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
## 7   462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
## 8   462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
## 9   462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
## 10  462.1295  96.61331  53.69965  42.91366   11.1969  6.325926  4.870978
##    전체_20세 남자_20세 여자_20세 전체_21세 남자_21세 여자_21세
## 1   1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958
## 2   1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958
## 3   1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958
## 4   1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958
## 5   1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958
## 6   1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958
## 7   1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958
## 8   1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958
## 9   1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958
## 10  1.604811 0.9820888 0.6227224  3.587114  1.697535   1.88958

이제 두 번째 문제를 해결해 보자. 앞서 언급한 바와 같이 여기서는 각각의 연령에 해당하는 학생수를 전체로 나누어 비율을 구하는 함수를 만들어야 한다. 여기서는 ’전체’에 대해 데이터를 만드는 방법을 사용한다.

df_mutate_all <- cbind(df_mutate |> select(1:4),
       df_mutate |> select(-(1:4)) |>
         select(starts_with('전체')) |>
         mutate_all(list(비율 = ~round(./전체, 3)))
)
       
df_mutate_all |> select(ends_with('비율')) |>
  head(10)
##    전체_비율 전체_2세_비율 전체_3세_비율 전체_4세_비율 전체_5세_비율
## 1          1             0         0.212         0.369         0.420
## 2          1             0         0.000         0.000         0.005
## 3          1             0         0.000         0.000         0.000
## 4          1             0         0.000         0.000         0.000
## 5          1             0         0.000         0.000         0.000
## 6          1             0         0.000         0.000         0.000
## 7          1             0         0.030         0.046         0.071
## 8          1             0         0.000         0.000         0.000
## 9          1             0         0.008         0.013         0.017
## 10         1             0         0.116         0.377         0.507
##    전체_6세_비율 전체_7세_비율 전체_8세_비율 전체_9세_비율 전체_10세_비율
## 1          0.000         0.000         0.000         0.000          0.000
## 2          0.162         0.177         0.164         0.152          0.160
## 3          0.000         0.000         0.000         0.000          0.000
## 4          0.000         0.000         0.000         0.000          0.000
## 5          0.000         0.000         0.000         0.000          0.000
## 6          0.000         0.000         0.000         0.000          0.000
## 7          0.036         0.017         0.040         0.033          0.031
## 8          0.000         0.000         0.000         0.000          0.000
## 9          0.041         0.044         0.041         0.038          0.040
## 10         0.000         0.000         0.000         0.000          0.000
##    전체_11세_비율 전체_12세_비율 전체_13세_비율 전체_14세_비율 전체_15세_비율
## 1           0.000          0.000          0.000          0.000          0.000
## 2           0.162          0.017          0.000          0.000          0.000
## 3           0.008          0.303          0.336          0.343          0.009
## 4           0.000          0.000          0.000          0.009          0.296
## 5           0.000          0.000          0.000          0.009          0.321
## 6           0.000          0.000          0.000          0.009          0.206
## 7           0.036          0.036          0.045          0.055          0.053
## 8           0.000          0.000          0.000          0.000          0.000
## 9           0.042          0.047          0.047          0.053          0.166
## 10          0.000          0.000          0.000          0.000          0.000
##    전체_16세_비율 전체_17세_비율 전체_18세_비율 전체_19세_비율 전체_20세_비율
## 1           0.000          0.000          0.000          0.000          0.000
## 2           0.000          0.000          0.000          0.000          0.000
## 3           0.001          0.000          0.000          0.000          0.000
## 4           0.329          0.322          0.043          0.002          0.000
## 5           0.333          0.319          0.018          0.001          0.000
## 6           0.316          0.331          0.131          0.006          0.000
## 7           0.098          0.069          0.084          0.055          0.069
## 8           0.125          0.875          0.000          0.000          0.000
## 9           0.185          0.188          0.025          0.002          0.001
## 10          0.000          0.000          0.000          0.000          0.000
##    전체_21세_비율
## 1           0.000
## 2           0.000
## 3           0.000
## 4           0.000
## 5           0.000
## 6           0.000
## 7           0.096
## 8           0.000
## 9           0.001
## 10          0.000
df_mutate_all |> glimpse()
## Rows: 41,985
## Columns: 46
## $ 연도           <chr> "1999", "1999", "1999", "1999", "1999", "1999", "1999", "~
## $ 시도           <chr> "서울", "서울", "서울", "서울", "서울", "서울", "서울", "~
## $ 행정구역       <chr> "종로구", "종로구", "종로구", "종로구", "종로구", "종로구",~
## $ 학제           <chr> "유치원", "초등학교", "중학교", "고등학교", "(일반계고)",~
## $ 전체           <dbl> 1535, 11182, 6219, 24832, 19389, 5443, 605, 480, 44853, 1~
## $ 전체_2세       <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0~
## $ 전체_3세       <dbl> 325, 0, 0, 0, 0, 0, 18, 0, 343, 141, 0, 0, 0, 0, 0, 0, 0, ~
## $ 전체_4세       <dbl> 566, 0, 0, 0, 0, 0, 28, 0, 594, 456, 0, 0, 0, 0, 0, 0, 0, ~
## $ 전체_5세       <dbl> 644, 61, 0, 0, 0, 0, 43, 0, 748, 614, 60, 0, 0, 0, 0, 0, 0~
## $ 전체_6세       <dbl> 0, 1817, 0, 0, 0, 0, 22, 0, 1839, 0, 1956, 0, 0, 0, 0, 0, ~
## $ 전체_7세       <dbl> 0, 1978, 0, 0, 0, 0, 10, 0, 1988, 0, 1990, 0, 0, 0, 0, 0, ~
## $ 전체_8세       <dbl> 0, 1833, 0, 0, 0, 0, 24, 0, 1857, 0, 1826, 0, 0, 0, 0, 0, ~
## $ 전체_9세       <dbl> 0, 1703, 0, 0, 0, 0, 20, 0, 1723, 0, 1750, 0, 0, 0, 0, 0, ~
## $ 전체_10세      <dbl> 0, 1785, 0, 0, 0, 0, 19, 0, 1804, 0, 1688, 0, 0, 0, 0, 0, ~
## $ 전체_11세      <dbl> 0, 1814, 47, 0, 0, 0, 22, 0, 1883, 0, 1756, 18, 0, 0, 0, 0~
## $ 전체_12세      <dbl> 0, 187, 1885, 0, 0, 0, 22, 0, 2094, 0, 101, 1860, 0, 0, 0,~
## $ 전체_13세      <dbl> 0, 4, 2092, 1, 1, 0, 27, 0, 2124, 0, 2, 2044, 0, 0, 0, 0, ~
## $ 전체_14세      <dbl> 0, 0, 2131, 218, 167, 51, 33, 0, 2382, 0, 0, 2124, 55, 42,~
## $ 전체_15세      <dbl> 0, 0, 58, 7342, 6219, 1123, 32, 0, 7432, 0, 0, 61, 5428, 3~
## $ 전체_16세      <dbl> 0, 0, 5, 8169, 6447, 1722, 59, 60, 8293, 0, 0, 2, 7953, 34~
## $ 전체_17세      <dbl> 0, 0, 1, 7991, 6187, 1804, 42, 420, 8454, 0, 0, 1, 8073, 3~
## $ 전체_18세      <dbl> 0, 0, 0, 1061, 350, 711, 51, 0, 1112, 0, 0, 0, 1375, 669, ~
## $ 전체_19세      <dbl> 0, 0, 0, 50, 18, 32, 33, 0, 83, 0, 0, 0, 163, 86, 77, 38, ~
## $ 전체_20세      <dbl> 0, 0, 0, 0, 0, 0, 42, 0, 42, 0, 0, 0, 11, 1, 10, 49, 0, 60~
## $ 전체_21세      <dbl> 0, 0, 0, 0, 0, 0, 58, 0, 58, 0, 0, 0, 2, 2, 0, 286, 0, 288~
## $ 전체_비율      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,~
## $ 전체_2세_비율  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ~
## $ 전체_3세_비율  <dbl> 0.212, 0.000, 0.000, 0.000, 0.000, 0.000, 0.030, 0.000, 0.00~
## $ 전체_4세_비율  <dbl> 0.369, 0.000, 0.000, 0.000, 0.000, 0.000, 0.046, 0.000, 0.01~
## $ 전체_5세_비율  <dbl> 0.420, 0.005, 0.000, 0.000, 0.000, 0.000, 0.071, 0.000, 0.01~
## $ 전체_6세_비율  <dbl> 0.000, 0.162, 0.000, 0.000, 0.000, 0.000, 0.036, 0.000, 0.04~
## $ 전체_7세_비율  <dbl> 0.000, 0.177, 0.000, 0.000, 0.000, 0.000, 0.017, 0.000, 0.04~
## $ 전체_8세_비율  <dbl> 0.000, 0.164, 0.000, 0.000, 0.000, 0.000, 0.040, 0.000, 0.04~
## $ 전체_9세_비율  <dbl> 0.000, 0.152, 0.000, 0.000, 0.000, 0.000, 0.033, 0.000, 0.03~
## $ 전체_10세_비율 <dbl> 0.000, 0.160, 0.000, 0.000, 0.000, 0.000, 0.031, 0.000, 0.04~
## $ 전체_11세_비율 <dbl> 0.000, 0.162, 0.008, 0.000, 0.000, 0.000, 0.036, 0.000, 0.04~
## $ 전체_12세_비율 <dbl> 0.000, 0.017, 0.303, 0.000, 0.000, 0.000, 0.036, 0.000, 0.04~
## $ 전체_13세_비율 <dbl> 0.000, 0.000, 0.336, 0.000, 0.000, 0.000, 0.045, 0.000, 0.04~
## $ 전체_14세_비율 <dbl> 0.000, 0.000, 0.343, 0.009, 0.009, 0.009, 0.055, 0.000, 0.05~
## $ 전체_15세_비율 <dbl> 0.000, 0.000, 0.009, 0.296, 0.321, 0.206, 0.053, 0.000, 0.16~
## $ 전체_16세_비율 <dbl> 0.000, 0.000, 0.001, 0.329, 0.333, 0.316, 0.098, 0.125, 0.18~
## $ 전체_17세_비율 <dbl> 0.000, 0.000, 0.000, 0.322, 0.319, 0.331, 0.069, 0.875, 0.18~
## $ 전체_18세_비율 <dbl> 0.000, 0.000, 0.000, 0.043, 0.018, 0.131, 0.084, 0.000, 0.02~
## $ 전체_19세_비율 <dbl> 0.000, 0.000, 0.000, 0.002, 0.001, 0.006, 0.055, 0.000, 0.00~
## $ 전체_20세_비율 <dbl> 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.069, 0.000, 0.00~
## $ 전체_21세_비율 <dbl> 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.096, 0.000, 0.00~

muate_all()list()를 사용하여 함수를 만들었다. 이전에는 funs()를 사용하여 함수를 만들었지만 dplyr에서는 funs()를 폐기할 예정으로 list()를 사용할 것을 권고하고 있다. list()로 새로 만들어질 열 이름과 계산될 수식을 ~를 붙여 넣어주면 ~로 묶여진 수식을 함수로 인식하여 계산되는데 .은 자신의 열을 의미한다. 따라서 비율 = ~round(./전체, 3)은 ‘비율’이라는 열을 만드는데 ’각각의 열(.)을 ’전체’ 열로 나누고 소수점 3자리에서 반올림하는 함수’를 의미한다. 이렇게 계산된 값들은 ’비율’이라는 접미어가 붙은 열로 생성되어 저장된다.

mutate_at

앞선 mutate_all()은 전체 열에 대해 같은 함수를 적용하기 때문에 전체, 남자, 여자를 구분하여 적용할 수 없어서 전체에 해당하는 열만 계산하였다. 하지만 전체, 남자, 여자에 해당하는 열에 각각 적용하려면 어떻게 해야하는가? 이럴때 사용하는 함수가 mutate_at()이다.

mutate_at()은 문자열 벡터나 vars()에 선택된 열에 해당하는 열에 한하여 설정된 함수를 적용하는 함수이다. 앞서의 경우에는 열 이름이 ‘전체’, ‘남자’, ’여자’로 시작하는 열을 따로 따로 적용해야하기 때문에 muate_at()을 사용해야 한다.

df_mutate_at <- df_mutate |>
  mutate_at(vars(starts_with('전체')), list(비율 = ~round(./전체, 3))) |>
  mutate_at(vars(starts_with('남자')), list(비율 = ~round(./남자, 3))) |>
  mutate_at(vars(starts_with('여자')), list(비율 = ~round(./여자, 3)))

df_mutate_at |>  select(ends_with('비율')) |>
  head(10)
## # A tibble: 10 x 63
##    전체_비율 전체_2세_비율 전체_3세_비율 전체_4세_비율 전체_5세_비율
##        <dbl>         <dbl>         <dbl>         <dbl>         <dbl>
##  1         1             0         0.212         0.369         0.42 
##  2         1             0         0             0             0.005
##  3         1             0         0             0             0    
##  4         1             0         0             0             0    
##  5         1             0         0             0             0    
##  6         1             0         0             0             0    
##  7         1             0         0.03          0.046         0.071
##  8         1             0         0             0             0    
##  9         1             0         0.008         0.013         0.017
## 10         1             0         0.116         0.377         0.507
## # ... with 58 more variables: 전체_6세_비율 <dbl>, 전체_7세_비율 <dbl>,
## #   전체_8세_비율 <dbl>, 전체_9세_비율 <dbl>, 전체_10세_비율 <dbl>,
## #   전체_11세_비율 <dbl>, 전체_12세_비율 <dbl>, 전체_13세_비율 <dbl>,
## #   전체_14세_비율 <dbl>, 전체_15세_비율 <dbl>, 전체_16세_비율 <dbl>,
## #   전체_17세_비율 <dbl>, 전체_18세_비율 <dbl>, 전체_19세_비율 <dbl>,
## #   전체_20세_비율 <dbl>, 전체_21세_비율 <dbl>, 남자_비율 <dbl>,
## #   남자_2세_비율 <dbl>, 남자_3세_비율 <dbl>, 남자_4세_비율 <dbl>, ...
df_mutate_at |> glimpse()
## Rows: 41,985
## Columns: 130
## $ 연도           <chr> "1999", "1999", "1999", "1999", "1999", "1999", "1999", "~
## $ 시도           <chr> "서울", "서울", "서울", "서울", "서울", "서울", "서울", "~
## $ 행정구역       <chr> "종로구", "종로구", "종로구", "종로구", "종로구", "종로구",~
## $ 학제           <chr> "유치원", "초등학교", "중학교", "고등학교", "(일반계고)",~
## $ 전체           <dbl> 1535, 11182, 6219, 24832, 19389, 5443, 605, 480, 44853, 1~
## $ 남자           <dbl> 817, 5909, 3722, 12762, 9683, 3079, 375, 399, 23984, 643,~
## $ 여자           <dbl> 718, 5273, 2497, 12070, 9706, 2364, 230, 81, 20869, 568, ~
## $ 전체_2세       <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0~
## $ 남자_2세       <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0~
## $ 여자_2세       <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0~
## $ 전체_3세       <dbl> 325, 0, 0, 0, 0, 0, 18, 0, 343, 141, 0, 0, 0, 0, 0, 0, 0, ~
## $ 남자_3세       <dbl> 176, 0, 0, 0, 0, 0, 9, 0, 185, 80, 0, 0, 0, 0, 0, 0, 0, 80~
## $ 여자_3세       <dbl> 149, 0, 0, 0, 0, 0, 9, 0, 158, 61, 0, 0, 0, 0, 0, 0, 0, 61~
## $ 전체_4세       <dbl> 566, 0, 0, 0, 0, 0, 28, 0, 594, 456, 0, 0, 0, 0, 0, 0, 0, ~
## $ 남자_4세       <dbl> 290, 0, 0, 0, 0, 0, 22, 0, 312, 246, 0, 0, 0, 0, 0, 0, 0, ~
## $ 여자_4세       <dbl> 276, 0, 0, 0, 0, 0, 6, 0, 282, 210, 0, 0, 0, 0, 0, 0, 0, 2~
## $ 전체_5세       <dbl> 644, 61, 0, 0, 0, 0, 43, 0, 748, 614, 60, 0, 0, 0, 0, 0, 0~
## $ 남자_5세       <dbl> 351, 23, 0, 0, 0, 0, 28, 0, 402, 317, 22, 0, 0, 0, 0, 0, 0~
## $ 여자_5세       <dbl> 293, 38, 0, 0, 0, 0, 15, 0, 346, 297, 38, 0, 0, 0, 0, 0, 0~
## $ 전체_6세       <dbl> 0, 1817, 0, 0, 0, 0, 22, 0, 1839, 0, 1956, 0, 0, 0, 0, 0, ~
## $ 남자_6세       <dbl> 0, 964, 0, 0, 0, 0, 11, 0, 975, 0, 1014, 0, 0, 0, 0, 0, 0,~
## $ 여자_6세       <dbl> 0, 853, 0, 0, 0, 0, 11, 0, 864, 0, 942, 0, 0, 0, 0, 0, 0, ~
## $ 전체_7세       <dbl> 0, 1978, 0, 0, 0, 0, 10, 0, 1988, 0, 1990, 0, 0, 0, 0, 0, ~
## $ 남자_7세       <dbl> 0, 1042, 0, 0, 0, 0, 5, 0, 1047, 0, 1038, 0, 0, 0, 0, 0, 0~
## $ 여자_7세       <dbl> 0, 936, 0, 0, 0, 0, 5, 0, 941, 0, 952, 0, 0, 0, 0, 0, 0, 9~
## $ 전체_8세       <dbl> 0, 1833, 0, 0, 0, 0, 24, 0, 1857, 0, 1826, 0, 0, 0, 0, 0, ~
## $ 남자_8세       <dbl> 0, 951, 0, 0, 0, 0, 14, 0, 965, 0, 965, 0, 0, 0, 0, 0, 0, ~
## $ 여자_8세       <dbl> 0, 882, 0, 0, 0, 0, 10, 0, 892, 0, 861, 0, 0, 0, 0, 0, 0, ~
## $ 전체_9세       <dbl> 0, 1703, 0, 0, 0, 0, 20, 0, 1723, 0, 1750, 0, 0, 0, 0, 0, ~
## $ 남자_9세       <dbl> 0, 907, 0, 0, 0, 0, 11, 0, 918, 0, 954, 0, 0, 0, 0, 0, 0, ~
## $ 여자_9세       <dbl> 0, 796, 0, 0, 0, 0, 9, 0, 805, 0, 796, 0, 0, 0, 0, 0, 0, 7~
## $ 전체_10세      <dbl> 0, 1785, 0, 0, 0, 0, 19, 0, 1804, 0, 1688, 0, 0, 0, 0, 0, ~
## $ 남자_10세      <dbl> 0, 961, 0, 0, 0, 0, 9, 0, 970, 0, 894, 0, 0, 0, 0, 0, 0, 8~
## $ 여자_10세      <dbl> 0, 824, 0, 0, 0, 0, 10, 0, 834, 0, 794, 0, 0, 0, 0, 0, 0, ~
## $ 전체_11세      <dbl> 0, 1814, 47, 0, 0, 0, 22, 0, 1883, 0, 1756, 18, 0, 0, 0, 0~
## $ 남자_11세      <dbl> 0, 955, 13, 0, 0, 0, 14, 0, 982, 0, 910, 7, 0, 0, 0, 0, 0,~
## $ 여자_11세      <dbl> 0, 859, 34, 0, 0, 0, 8, 0, 901, 0, 846, 11, 0, 0, 0, 0, 0,~
## $ 전체_12세      <dbl> 0, 187, 1885, 0, 0, 0, 22, 0, 2094, 0, 101, 1860, 0, 0, 0,~
## $ 남자_12세      <dbl> 0, 104, 1157, 0, 0, 0, 11, 0, 1272, 0, 49, 854, 0, 0, 0, 0~
## $ 여자_12세      <dbl> 0, 83, 728, 0, 0, 0, 11, 0, 822, 0, 52, 1006, 0, 0, 0, 0, ~
## $ 전체_13세      <dbl> 0, 4, 2092, 1, 1, 0, 27, 0, 2124, 0, 2, 2044, 0, 0, 0, 0, ~
## $ 남자_13세      <dbl> 0, 2, 1243, 0, 0, 0, 17, 0, 1262, 0, 2, 866, 0, 0, 0, 0, 2~
## $ 여자_13세      <dbl> 0, 2, 849, 1, 1, 0, 10, 0, 862, 0, 0, 1178, 0, 0, 0, 0, 27~
## $ 전체_14세      <dbl> 0, 0, 2131, 218, 167, 51, 33, 0, 2382, 0, 0, 2124, 55, 42,~
## $ 남자_14세      <dbl> 0, 0, 1270, 109, 80, 29, 21, 0, 1400, 0, 0, 968, 35, 23, 1~
## $ 여자_14세      <dbl> 0, 0, 861, 109, 87, 22, 12, 0, 982, 0, 0, 1156, 20, 19, 1,~
## $ 전체_15세      <dbl> 0, 0, 58, 7342, 6219, 1123, 32, 0, 7432, 0, 0, 61, 5428, 3~
## $ 남자_15세      <dbl> 0, 0, 34, 3939, 3152, 787, 20, 0, 3993, 0, 0, 22, 3140, 12~
## $ 여자_15세      <dbl> 0, 0, 24, 3403, 3067, 336, 12, 0, 3439, 0, 0, 39, 2288, 17~
## $ 전체_16세      <dbl> 0, 0, 5, 8169, 6447, 1722, 59, 60, 8293, 0, 0, 2, 7953, 34~
## $ 남자_16세      <dbl> 0, 0, 4, 4162, 3149, 1013, 28, 48, 4242, 0, 0, 0, 5416, 16~
## $ 여자_16세      <dbl> 0, 0, 1, 4007, 3298, 709, 31, 12, 4051, 0, 0, 2, 2537, 185~
## $ 전체_17세      <dbl> 0, 0, 1, 7991, 6187, 1804, 42, 420, 8454, 0, 0, 1, 8073, 3~
## $ 남자_17세      <dbl> 0, 0, 1, 4210, 3005, 1205, 25, 351, 4587, 0, 0, 1, 5002, 1~
## $ 여자_17세      <dbl> 0, 0, 0, 3781, 3182, 599, 17, 69, 3867, 0, 0, 0, 3071, 177~
## $ 전체_18세      <dbl> 0, 0, 0, 1061, 350, 711, 51, 0, 1112, 0, 0, 0, 1375, 669, ~
## $ 남자_18세      <dbl> 0, 0, 0, 322, 282, 40, 33, 0, 355, 0, 0, 0, 1286, 640, 646~
## $ 여자_18세      <dbl> 0, 0, 0, 739, 68, 671, 18, 0, 757, 0, 0, 0, 89, 29, 60, 44~
## $ 전체_19세      <dbl> 0, 0, 0, 50, 18, 32, 33, 0, 83, 0, 0, 0, 163, 86, 77, 38, ~
## $ 남자_19세      <dbl> 0, 0, 0, 20, 15, 5, 18, 0, 38, 0, 0, 0, 158, 84, 74, 8, 0,~
## $ 여자_19세      <dbl> 0, 0, 0, 30, 3, 27, 15, 0, 45, 0, 0, 0, 5, 2, 3, 30, 0, 35~
## $ 전체_20세      <dbl> 0, 0, 0, 0, 0, 0, 42, 0, 42, 0, 0, 0, 11, 1, 10, 49, 0, 60~
## $ 남자_20세      <dbl> 0, 0, 0, 0, 0, 0, 28, 0, 28, 0, 0, 0, 11, 1, 10, 5, 0, 16,~
## $ 여자_20세      <dbl> 0, 0, 0, 0, 0, 0, 14, 0, 14, 0, 0, 0, 0, 0, 0, 44, 0, 44, ~
## $ 전체_21세      <dbl> 0, 0, 0, 0, 0, 0, 58, 0, 58, 0, 0, 0, 2, 2, 0, 286, 0, 288~
## $ 남자_21세      <dbl> 0, 0, 0, 0, 0, 0, 51, 0, 51, 0, 0, 0, 2, 2, 0, 59, 0, 61, ~
## $ 여자_21세      <dbl> 0, 0, 0, 0, 0, 0, 7, 0, 7, 0, 0, 0, 0, 0, 0, 227, 0, 227, ~
## $ 전체_비율      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,~
## $ 전체_2세_비율  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ~
## $ 전체_3세_비율  <dbl> 0.212, 0.000, 0.000, 0.000, 0.000, 0.000, 0.030, 0.000, 0.00~
## $ 전체_4세_비율  <dbl> 0.369, 0.000, 0.000, 0.000, 0.000, 0.000, 0.046, 0.000, 0.01~
## $ 전체_5세_비율  <dbl> 0.420, 0.005, 0.000, 0.000, 0.000, 0.000, 0.071, 0.000, 0.01~
## $ 전체_6세_비율  <dbl> 0.000, 0.162, 0.000, 0.000, 0.000, 0.000, 0.036, 0.000, 0.04~
## $ 전체_7세_비율  <dbl> 0.000, 0.177, 0.000, 0.000, 0.000, 0.000, 0.017, 0.000, 0.04~
## $ 전체_8세_비율  <dbl> 0.000, 0.164, 0.000, 0.000, 0.000, 0.000, 0.040, 0.000, 0.04~
## $ 전체_9세_비율  <dbl> 0.000, 0.152, 0.000, 0.000, 0.000, 0.000, 0.033, 0.000, 0.03~
## $ 전체_10세_비율 <dbl> 0.000, 0.160, 0.000, 0.000, 0.000, 0.000, 0.031, 0.000, 0.04~
## $ 전체_11세_비율 <dbl> 0.000, 0.162, 0.008, 0.000, 0.000, 0.000, 0.036, 0.000, 0.04~
## $ 전체_12세_비율 <dbl> 0.000, 0.017, 0.303, 0.000, 0.000, 0.000, 0.036, 0.000, 0.04~
## $ 전체_13세_비율 <dbl> 0.000, 0.000, 0.336, 0.000, 0.000, 0.000, 0.045, 0.000, 0.04~
## $ 전체_14세_비율 <dbl> 0.000, 0.000, 0.343, 0.009, 0.009, 0.009, 0.055, 0.000, 0.05~
## $ 전체_15세_비율 <dbl> 0.000, 0.000, 0.009, 0.296, 0.321, 0.206, 0.053, 0.000, 0.16~
## $ 전체_16세_비율 <dbl> 0.000, 0.000, 0.001, 0.329, 0.333, 0.316, 0.098, 0.125, 0.18~
## $ 전체_17세_비율 <dbl> 0.000, 0.000, 0.000, 0.322, 0.319, 0.331, 0.069, 0.875, 0.18~
## $ 전체_18세_비율 <dbl> 0.000, 0.000, 0.000, 0.043, 0.018, 0.131, 0.084, 0.000, 0.02~
## $ 전체_19세_비율 <dbl> 0.000, 0.000, 0.000, 0.002, 0.001, 0.006, 0.055, 0.000, 0.00~
## $ 전체_20세_비율 <dbl> 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.069, 0.000, 0.00~
## $ 전체_21세_비율 <dbl> 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.096, 0.000, 0.00~
## $ 남자_비율      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,~
## $ 남자_2세_비율  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ~
## $ 남자_3세_비율  <dbl> 0.215, 0.000, 0.000, 0.000, 0.000, 0.000, 0.024, 0.000, 0.00~
## $ 남자_4세_비율  <dbl> 0.355, 0.000, 0.000, 0.000, 0.000, 0.000, 0.059, 0.000, 0.01~
## $ 남자_5세_비율  <dbl> 0.430, 0.004, 0.000, 0.000, 0.000, 0.000, 0.075, 0.000, 0.01~
## $ 남자_6세_비율  <dbl> 0.000, 0.163, 0.000, 0.000, 0.000, 0.000, 0.029, 0.000, 0.04~
## $ 남자_7세_비율  <dbl> 0.000, 0.176, 0.000, 0.000, 0.000, 0.000, 0.013, 0.000, 0.04~
## $ 남자_8세_비율  <dbl> 0.000, 0.161, 0.000, 0.000, 0.000, 0.000, 0.037, 0.000, 0.04~
## $ 남자_9세_비율  <dbl> 0.000, 0.153, 0.000, 0.000, 0.000, 0.000, 0.029, 0.000, 0.03~
## $ 남자_10세_비율 <dbl> 0.000, 0.163, 0.000, 0.000, 0.000, 0.000, 0.024, 0.000, 0.04~
## $ 남자_11세_비율 <dbl> 0.000, 0.162, 0.003, 0.000, 0.000, 0.000, 0.037, 0.000, 0.04~
## $ 남자_12세_비율 <dbl> 0.000, 0.018, 0.311, 0.000, 0.000, 0.000, 0.029, 0.000, 0.05~
## $ 남자_13세_비율 <dbl> 0.000, 0.000, 0.334, 0.000, 0.000, 0.000, 0.045, 0.000, 0.05~
## $ 남자_14세_비율 <dbl> 0.000, 0.000, 0.341, 0.009, 0.008, 0.009, 0.056, 0.000, 0.05~
## $ 남자_15세_비율 <dbl> 0.000, 0.000, 0.009, 0.309, 0.326, 0.256, 0.053, 0.000, 0.16~
## $ 남자_16세_비율 <dbl> 0.000, 0.000, 0.001, 0.326, 0.325, 0.329, 0.075, 0.120, 0.17~
## $ 남자_17세_비율 <dbl> 0.000, 0.000, 0.000, 0.330, 0.310, 0.391, 0.067, 0.880, 0.19~
## $ 남자_18세_비율 <dbl> 0.000, 0.000, 0.000, 0.025, 0.029, 0.013, 0.088, 0.000, 0.01~
## $ 남자_19세_비율 <dbl> 0.000, 0.000, 0.000, 0.002, 0.002, 0.002, 0.048, 0.000, 0.00~
## $ 남자_20세_비율 <dbl> 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.075, 0.000, 0.00~
## $ 남자_21세_비율 <dbl> 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.136, 0.000, 0.00~
## $ 여자_비율      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,~
## $ 여자_2세_비율  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ~
## $ 여자_3세_비율  <dbl> 0.208, 0.000, 0.000, 0.000, 0.000, 0.000, 0.039, 0.000, 0.00~
## $ 여자_4세_비율  <dbl> 0.384, 0.000, 0.000, 0.000, 0.000, 0.000, 0.026, 0.000, 0.01~
## $ 여자_5세_비율  <dbl> 0.408, 0.007, 0.000, 0.000, 0.000, 0.000, 0.065, 0.000, 0.01~
## $ 여자_6세_비율  <dbl> 0.000, 0.162, 0.000, 0.000, 0.000, 0.000, 0.048, 0.000, 0.04~
## $ 여자_7세_비율  <dbl> 0.000, 0.178, 0.000, 0.000, 0.000, 0.000, 0.022, 0.000, 0.04~
## $ 여자_8세_비율  <dbl> 0.000, 0.167, 0.000, 0.000, 0.000, 0.000, 0.043, 0.000, 0.04~
## $ 여자_9세_비율  <dbl> 0.000, 0.151, 0.000, 0.000, 0.000, 0.000, 0.039, 0.000, 0.03~
## $ 여자_10세_비율 <dbl> 0.000, 0.156, 0.000, 0.000, 0.000, 0.000, 0.043, 0.000, 0.04~
## $ 여자_11세_비율 <dbl> 0.000, 0.163, 0.014, 0.000, 0.000, 0.000, 0.035, 0.000, 0.04~
## $ 여자_12세_비율 <dbl> 0.000, 0.016, 0.292, 0.000, 0.000, 0.000, 0.048, 0.000, 0.03~
## $ 여자_13세_비율 <dbl> 0.000, 0.000, 0.340, 0.000, 0.000, 0.000, 0.043, 0.000, 0.04~
## $ 여자_14세_비율 <dbl> 0.000, 0.000, 0.345, 0.009, 0.009, 0.009, 0.052, 0.000, 0.04~
## $ 여자_15세_비율 <dbl> 0.000, 0.000, 0.010, 0.282, 0.316, 0.142, 0.052, 0.000, 0.16~
## $ 여자_16세_비율 <dbl> 0.000, 0.000, 0.000, 0.332, 0.340, 0.300, 0.135, 0.148, 0.19~
## $ 여자_17세_비율 <dbl> 0.000, 0.000, 0.000, 0.313, 0.328, 0.253, 0.074, 0.852, 0.18~
## $ 여자_18세_비율 <dbl> 0.000, 0.000, 0.000, 0.061, 0.007, 0.284, 0.078, 0.000, 0.03~
## $ 여자_19세_비율 <dbl> 0.000, 0.000, 0.000, 0.002, 0.000, 0.011, 0.065, 0.000, 0.00~
## $ 여자_20세_비율 <dbl> 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.061, 0.000, 0.00~
## $ 여자_21세_비율 <dbl> 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.030, 0.000, 0.00~

mutate_if

mutate_if()는 특정 조건과 일치하는 모든 변수의 수정을 위해 사용한다. mutate_if()는 특정 데이터 타입의 열을 다른 데이터 타입으로 변경할 때 유용하게 사용된다. 만약 앞서 만든 데이터를 모두 문자열로 바꾸어야한다면 mutate_if()가 매우 유용하게 사용된다.

df_mutate_if <- df_mutate_at |>
  mutate_if(is.numeric, as.character)

df_mutate_if |>
  head(10)
## # A tibble: 10 x 130
##    연도  시도  행정구역 학제       전체  남자  여자  전체_2세 남자_2세 여자_2세
##    <chr> <chr> <chr>    <chr>      <chr> <chr> <chr> <chr>    <chr>    <chr>   
##  1 1999  서울  종로구   유치원     1535  817   718   0        0        0       
##  2 1999  서울  종로구   초등학교   11182 5909  5273  0        0        0       
##  3 1999  서울  종로구   중학교     6219  3722  2497  0        0        0       
##  4 1999  서울  종로구   고등학교   24832 12762 12070 0        0        0       
##  5 1999  서울  종로구   (일반계고) 19389 9683  9706  0        0        0       
##  6 1999  서울  종로구   (전문계고) 5443  3079  2364  0        0        0       
##  7 1999  서울  종로구   특수학교   605   375   230   0        0        0       
##  8 1999  서울  종로구   각종학교   480   399   81    0        0        0       
##  9 1999  서울  종로구   소계       44853 23984 20869 0        0        0       
## 10 1999  서울  중구     유치원     1211  643   568   0        0        0       
## # ... with 120 more variables: 전체_3세 <chr>, 남자_3세 <chr>, 여자_3세 <chr>,
## #   전체_4세 <chr>, 남자_4세 <chr>, 여자_4세 <chr>, 전체_5세 <chr>,
## #   남자_5세 <chr>, 여자_5세 <chr>, 전체_6세 <chr>, 남자_6세 <chr>,
## #   여자_6세 <chr>, 전체_7세 <chr>, 남자_7세 <chr>, 여자_7세 <chr>,
## #   전체_8세 <chr>, 남자_8세 <chr>, 여자_8세 <chr>, 전체_9세 <chr>,
## #   남자_9세 <chr>, 여자_9세 <chr>, 전체_10세 <chr>, 남자_10세 <chr>,
## #   여자_10세 <chr>, 전체_11세 <chr>, 남자_11세 <chr>, 여자_11세 <chr>, ...
df_mutate_if |>
  glimpse()
## Rows: 41,985
## Columns: 130
## $ 연도           <chr> "1999", "1999", "1999", "1999", "1999", "1999", "1999", "~
## $ 시도           <chr> "서울", "서울", "서울", "서울", "서울", "서울", "서울", "~
## $ 행정구역       <chr> "종로구", "종로구", "종로구", "종로구", "종로구", "종로구",~
## $ 학제           <chr> "유치원", "초등학교", "중학교", "고등학교", "(일반계고)",~
## $ 전체           <chr> "1535", "11182", "6219", "24832", "19389", "5443", "605",~
## $ 남자           <chr> "817", "5909", "3722", "12762", "9683", "3079", "375", "3~
## $ 여자           <chr> "718", "5273", "2497", "12070", "9706", "2364", "230", "8~
## $ 전체_2세       <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"~
## $ 남자_2세       <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"~
## $ 여자_2세       <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"~
## $ 전체_3세       <chr> "325", "0", "0", "0", "0", "0", "18", "0", "343", "141", "~
## $ 남자_3세       <chr> "176", "0", "0", "0", "0", "0", "9", "0", "185", "80", "0"~
## $ 여자_3세       <chr> "149", "0", "0", "0", "0", "0", "9", "0", "158", "61", "0"~
## $ 전체_4세       <chr> "566", "0", "0", "0", "0", "0", "28", "0", "594", "456", "~
## $ 남자_4세       <chr> "290", "0", "0", "0", "0", "0", "22", "0", "312", "246", "~
## $ 여자_4세       <chr> "276", "0", "0", "0", "0", "0", "6", "0", "282", "210", "0~
## $ 전체_5세       <chr> "644", "61", "0", "0", "0", "0", "43", "0", "748", "614", ~
## $ 남자_5세       <chr> "351", "23", "0", "0", "0", "0", "28", "0", "402", "317", ~
## $ 여자_5세       <chr> "293", "38", "0", "0", "0", "0", "15", "0", "346", "297", ~
## $ 전체_6세       <chr> "0", "1817", "0", "0", "0", "0", "22", "0", "1839", "0", "~
## $ 남자_6세       <chr> "0", "964", "0", "0", "0", "0", "11", "0", "975", "0", "10~
## $ 여자_6세       <chr> "0", "853", "0", "0", "0", "0", "11", "0", "864", "0", "94~
## $ 전체_7세       <chr> "0", "1978", "0", "0", "0", "0", "10", "0", "1988", "0", "~
## $ 남자_7세       <chr> "0", "1042", "0", "0", "0", "0", "5", "0", "1047", "0", "1~
## $ 여자_7세       <chr> "0", "936", "0", "0", "0", "0", "5", "0", "941", "0", "952~
## $ 전체_8세       <chr> "0", "1833", "0", "0", "0", "0", "24", "0", "1857", "0", "~
## $ 남자_8세       <chr> "0", "951", "0", "0", "0", "0", "14", "0", "965", "0", "96~
## $ 여자_8세       <chr> "0", "882", "0", "0", "0", "0", "10", "0", "892", "0", "86~
## $ 전체_9세       <chr> "0", "1703", "0", "0", "0", "0", "20", "0", "1723", "0", "~
## $ 남자_9세       <chr> "0", "907", "0", "0", "0", "0", "11", "0", "918", "0", "95~
## $ 여자_9세       <chr> "0", "796", "0", "0", "0", "0", "9", "0", "805", "0", "796~
## $ 전체_10세      <chr> "0", "1785", "0", "0", "0", "0", "19", "0", "1804", "0", "~
## $ 남자_10세      <chr> "0", "961", "0", "0", "0", "0", "9", "0", "970", "0", "894~
## $ 여자_10세      <chr> "0", "824", "0", "0", "0", "0", "10", "0", "834", "0", "79~
## $ 전체_11세      <chr> "0", "1814", "47", "0", "0", "0", "22", "0", "1883", "0", ~
## $ 남자_11세      <chr> "0", "955", "13", "0", "0", "0", "14", "0", "982", "0", "9~
## $ 여자_11세      <chr> "0", "859", "34", "0", "0", "0", "8", "0", "901", "0", "84~
## $ 전체_12세      <chr> "0", "187", "1885", "0", "0", "0", "22", "0", "2094", "0",~
## $ 남자_12세      <chr> "0", "104", "1157", "0", "0", "0", "11", "0", "1272", "0",~
## $ 여자_12세      <chr> "0", "83", "728", "0", "0", "0", "11", "0", "822", "0", "5~
## $ 전체_13세      <chr> "0", "4", "2092", "1", "1", "0", "27", "0", "2124", "0", "~
## $ 남자_13세      <chr> "0", "2", "1243", "0", "0", "0", "17", "0", "1262", "0", "~
## $ 여자_13세      <chr> "0", "2", "849", "1", "1", "0", "10", "0", "862", "0", "0"~
## $ 전체_14세      <chr> "0", "0", "2131", "218", "167", "51", "33", "0", "2382", "~
## $ 남자_14세      <chr> "0", "0", "1270", "109", "80", "29", "21", "0", "1400", "0~
## $ 여자_14세      <chr> "0", "0", "861", "109", "87", "22", "12", "0", "982", "0",~
## $ 전체_15세      <chr> "0", "0", "58", "7342", "6219", "1123", "32", "0", "7432",~
## $ 남자_15세      <chr> "0", "0", "34", "3939", "3152", "787", "20", "0", "3993", ~
## $ 여자_15세      <chr> "0", "0", "24", "3403", "3067", "336", "12", "0", "3439", ~
## $ 전체_16세      <chr> "0", "0", "5", "8169", "6447", "1722", "59", "60", "8293",~
## $ 남자_16세      <chr> "0", "0", "4", "4162", "3149", "1013", "28", "48", "4242",~
## $ 여자_16세      <chr> "0", "0", "1", "4007", "3298", "709", "31", "12", "4051", ~
## $ 전체_17세      <chr> "0", "0", "1", "7991", "6187", "1804", "42", "420", "8454"~
## $ 남자_17세      <chr> "0", "0", "1", "4210", "3005", "1205", "25", "351", "4587"~
## $ 여자_17세      <chr> "0", "0", "0", "3781", "3182", "599", "17", "69", "3867", ~
## $ 전체_18세      <chr> "0", "0", "0", "1061", "350", "711", "51", "0", "1112", "0~
## $ 남자_18세      <chr> "0", "0", "0", "322", "282", "40", "33", "0", "355", "0", ~
## $ 여자_18세      <chr> "0", "0", "0", "739", "68", "671", "18", "0", "757", "0", ~
## $ 전체_19세      <chr> "0", "0", "0", "50", "18", "32", "33", "0", "83", "0", "0"~
## $ 남자_19세      <chr> "0", "0", "0", "20", "15", "5", "18", "0", "38", "0", "0",~
## $ 여자_19세      <chr> "0", "0", "0", "30", "3", "27", "15", "0", "45", "0", "0",~
## $ 전체_20세      <chr> "0", "0", "0", "0", "0", "0", "42", "0", "42", "0", "0", "~
## $ 남자_20세      <chr> "0", "0", "0", "0", "0", "0", "28", "0", "28", "0", "0", "~
## $ 여자_20세      <chr> "0", "0", "0", "0", "0", "0", "14", "0", "14", "0", "0", "~
## $ 전체_21세      <chr> "0", "0", "0", "0", "0", "0", "58", "0", "58", "0", "0", "~
## $ 남자_21세      <chr> "0", "0", "0", "0", "0", "0", "51", "0", "51", "0", "0", "~
## $ 여자_21세      <chr> "0", "0", "0", "0", "0", "0", "7", "0", "7", "0", "0", "0"~
## $ 전체_비율      <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1",~
## $ 전체_2세_비율  <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", ~
## $ 전체_3세_비율  <chr> "0.212", "0", "0", "0", "0", "0", "0.03", "0", "0.008", "0.1~
## $ 전체_4세_비율  <chr> "0.369", "0", "0", "0", "0", "0", "0.046", "0", "0.013", "0.~
## $ 전체_5세_비율  <chr> "0.42", "0.005", "0", "0", "0", "0", "0.071", "0", "0.017", ~
## $ 전체_6세_비율  <chr> "0", "0.162", "0", "0", "0", "0", "0.036", "0", "0.041", "0"~
## $ 전체_7세_비율  <chr> "0", "0.177", "0", "0", "0", "0", "0.017", "0", "0.044", "0"~
## $ 전체_8세_비율  <chr> "0", "0.164", "0", "0", "0", "0", "0.04", "0", "0.041", "0",~
## $ 전체_9세_비율  <chr> "0", "0.152", "0", "0", "0", "0", "0.033", "0", "0.038", "0"~
## $ 전체_10세_비율 <chr> "0", "0.16", "0", "0", "0", "0", "0.031", "0", "0.04", "0", ~
## $ 전체_11세_비율 <chr> "0", "0.162", "0.008", "0", "0", "0", "0.036", "0", "0.042",~
## $ 전체_12세_비율 <chr> "0", "0.017", "0.303", "0", "0", "0", "0.036", "0", "0.047",~
## $ 전체_13세_비율 <chr> "0", "0", "0.336", "0", "0", "0", "0.045", "0", "0.047", "0"~
## $ 전체_14세_비율 <chr> "0", "0", "0.343", "0.009", "0.009", "0.009", "0.055", "0", ~
## $ 전체_15세_비율 <chr> "0", "0", "0.009", "0.296", "0.321", "0.206", "0.053", "0", ~
## $ 전체_16세_비율 <chr> "0", "0", "0.001", "0.329", "0.333", "0.316", "0.098", "0.12~
## $ 전체_17세_비율 <chr> "0", "0", "0", "0.322", "0.319", "0.331", "0.069", "0.875", ~
## $ 전체_18세_비율 <chr> "0", "0", "0", "0.043", "0.018", "0.131", "0.084", "0", "0.0~
## $ 전체_19세_비율 <chr> "0", "0", "0", "0.002", "0.001", "0.006", "0.055", "0", "0.0~
## $ 전체_20세_비율 <chr> "0", "0", "0", "0", "0", "0", "0.069", "0", "0.001", "0", "0~
## $ 전체_21세_비율 <chr> "0", "0", "0", "0", "0", "0", "0.096", "0", "0.001", "0", "0~
## $ 남자_비율      <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1",~
## $ 남자_2세_비율  <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", ~
## $ 남자_3세_비율  <chr> "0.215", "0", "0", "0", "0", "0", "0.024", "0", "0.008", "0.~
## $ 남자_4세_비율  <chr> "0.355", "0", "0", "0", "0", "0", "0.059", "0", "0.013", "0.~
## $ 남자_5세_비율  <chr> "0.43", "0.004", "0", "0", "0", "0", "0.075", "0", "0.017", ~
## $ 남자_6세_비율  <chr> "0", "0.163", "0", "0", "0", "0", "0.029", "0", "0.041", "0"~
## $ 남자_7세_비율  <chr> "0", "0.176", "0", "0", "0", "0", "0.013", "0", "0.044", "0"~
## $ 남자_8세_비율  <chr> "0", "0.161", "0", "0", "0", "0", "0.037", "0", "0.04", "0",~
## $ 남자_9세_비율  <chr> "0", "0.153", "0", "0", "0", "0", "0.029", "0", "0.038", "0"~
## $ 남자_10세_비율 <chr> "0", "0.163", "0", "0", "0", "0", "0.024", "0", "0.04", "0",~
## $ 남자_11세_비율 <chr> "0", "0.162", "0.003", "0", "0", "0", "0.037", "0", "0.041",~
## $ 남자_12세_비율 <chr> "0", "0.018", "0.311", "0", "0", "0", "0.029", "0", "0.053",~
## $ 남자_13세_비율 <chr> "0", "0", "0.334", "0", "0", "0", "0.045", "0", "0.053", "0"~
## $ 남자_14세_비율 <chr> "0", "0", "0.341", "0.009", "0.008", "0.009", "0.056", "0", ~
## $ 남자_15세_비율 <chr> "0", "0", "0.009", "0.309", "0.326", "0.256", "0.053", "0", ~
## $ 남자_16세_비율 <chr> "0", "0", "0.001", "0.326", "0.325", "0.329", "0.075", "0.12~
## $ 남자_17세_비율 <chr> "0", "0", "0", "0.33", "0.31", "0.391", "0.067", "0.88", "0.~
## $ 남자_18세_비율 <chr> "0", "0", "0", "0.025", "0.029", "0.013", "0.088", "0", "0.0~
## $ 남자_19세_비율 <chr> "0", "0", "0", "0.002", "0.002", "0.002", "0.048", "0", "0.0~
## $ 남자_20세_비율 <chr> "0", "0", "0", "0", "0", "0", "0.075", "0", "0.001", "0", "0~
## $ 남자_21세_비율 <chr> "0", "0", "0", "0", "0", "0", "0.136", "0", "0.002", "0", "0~
## $ 여자_비율      <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1",~
## $ 여자_2세_비율  <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", ~
## $ 여자_3세_비율  <chr> "0.208", "0", "0", "0", "0", "0", "0.039", "0", "0.008", "0.~
## $ 여자_4세_비율  <chr> "0.384", "0", "0", "0", "0", "0", "0.026", "0", "0.014", "0.~
## $ 여자_5세_비율  <chr> "0.408", "0.007", "0", "0", "0", "0", "0.065", "0", "0.017",~
## $ 여자_6세_비율  <chr> "0", "0.162", "0", "0", "0", "0", "0.048", "0", "0.041", "0"~
## $ 여자_7세_비율  <chr> "0", "0.178", "0", "0", "0", "0", "0.022", "0", "0.045", "0"~
## $ 여자_8세_비율  <chr> "0", "0.167", "0", "0", "0", "0", "0.043", "0", "0.043", "0"~
## $ 여자_9세_비율  <chr> "0", "0.151", "0", "0", "0", "0", "0.039", "0", "0.039", "0"~
## $ 여자_10세_비율 <chr> "0", "0.156", "0", "0", "0", "0", "0.043", "0", "0.04", "0",~
## $ 여자_11세_비율 <chr> "0", "0.163", "0.014", "0", "0", "0", "0.035", "0", "0.043",~
## $ 여자_12세_비율 <chr> "0", "0.016", "0.292", "0", "0", "0", "0.048", "0", "0.039",~
## $ 여자_13세_비율 <chr> "0", "0", "0.34", "0", "0", "0", "0.043", "0", "0.041", "0",~
## $ 여자_14세_비율 <chr> "0", "0", "0.345", "0.009", "0.009", "0.009", "0.052", "0", ~
## $ 여자_15세_비율 <chr> "0", "0", "0.01", "0.282", "0.316", "0.142", "0.052", "0", "~
## $ 여자_16세_비율 <chr> "0", "0", "0", "0.332", "0.34", "0.3", "0.135", "0.148", "0.~
## $ 여자_17세_비율 <chr> "0", "0", "0", "0.313", "0.328", "0.253", "0.074", "0.852", ~
## $ 여자_18세_비율 <chr> "0", "0", "0", "0.061", "0.007", "0.284", "0.078", "0", "0.0~
## $ 여자_19세_비율 <chr> "0", "0", "0", "0.002", "0", "0.011", "0.065", "0", "0.002",~
## $ 여자_20세_비율 <chr> "0", "0", "0", "0", "0", "0", "0.061", "0", "0.001", "0", "0~
## $ 여자_21세_비율 <chr> "0", "0", "0", "0", "0", "0", "0.03", "0", "0", "0", "0", "0~

댓글