이번에는 직업별 월급을 분석해 보겠습니다. 먼저 직업 변수를 검토하고 전처리하겠습니다.
월급 변수 전처리 작업은 앞에서 완료했으니 생략하고 변수 간 관계를 분석하겠습니다.
분석 절차
1. 변수 검토 및 전처리
-직업, 월급
2. 변수 간 관계 분석
-직업별 월급 평균표 만들기, 그래프 만들기
직업 변수 검토 및 전처리하기
1. 변수 검토하기
먼저 직업을 나타낸 code_job 변수를 살펴보겠습니다.
class(welfare$code_job)
[1] "numeric"
table(welfare$code_job)
111 120 131 132 133 134 135 139 141 149 151 152 153 159 211 212 213
2 16 10 11 9 3 7 10 35 20 26 18 15 16 8 4 3
221 222 223 224 231 232 233 234 235 236 237 239 241 242 243 244 245
17 31 12 4 41 5 3 6 48 14 2 29 12 4 63 4 33
...
code_job 변수는 직업 코드를 의미합니다. 복지패널데이터에서 직업은 이름이 아니라 직업분류코드로 입력되어 있습니다. 지금 상태로는 분석을 하더라도 코드가 어떤 직업을 의미하는지 알 수 없습니다. 따라서 직업 분류코드를 이용해 직업 명칭 변수를 만들어야 합니다.
2. 전처리
직업분류코드 목록을 이용해 직업의 명칭으로 된 변수를 만들겠습니다. 먼저 직업분류코드 목록 데이터 프레임을 만들겠습니다., 깃허브(bit.ly/doit_rc)에서 Koweps_Codebook.xlsx를 다운로드해 프로젝트 폴더에 삽입한 후 불러오겠습니다. 이 파일의 '직종 코드' 시트에 직업분류코드가 정리되어 있습니다.
엑셀 파일을 불러오기 readxl 패키지를 로드합니다. 첫 행을 변수명으로 가져오도록 설정하고, 엑셀 파일의 두 번째 시트에 있는 직업분류코드 목록을 불러오도록 sheet 파라미터에 2를 지정합니다.
library(readxl)
list_job <- read_excel("Koweps_Codebook.xlsx", col_names = T, sheet = 2)
head(list_job)
# A tibble: 6 x 2
code_job job
<dbl> <chr>
1 111 의회의원 고위공무원 및 공공단체임원
2 112 기업고위임원
3 120 행정 및 경영지원 관리자
4 131 연구 교육 및 법률 관련 관리자
5 132 보험 및 금융 관리자
6 133 보건 및 사회복지 관련 관리자
dim(list_job)
[1] 149 2
출력 결과를 보면 직업분류코드 목록이 코드와 직업명 두 변수로 구성되고, 직업이 149개로 분류된다는 것을 알 수 있습니다.
3. left_join()으로 job 변수를 welfare에 결합합니다. welfare와 list_job에 공통으로 들어 있는 code_job 변수를 기준으로 결합하면 됩니다. 결합이 완료되면 welfare의 code_job, job 변수 일부를 출력해 잘 결합됐는지 확인하겠습니다.
welfare <- left_join(welfare, list_job, id = "code_job")
Joining, by = "code_job"
welfare %>%
filter(!is.na(code_job)) %>%
select(code_job, job) %>%
head(10)
code_job job
1 942 경비원 및 검표원
2 762 전기공
3 530 방문 노점 및 통신 판매 관련 종사자
4 999 기타 서비스관련 단순 종사원
5 312 경영관련 사무원
6 254 문리 기술 및 예능 강사
...
welfare에 직업 명칭으로 된 job 변수가 결합된 것을 확인할 수 있습니다. 이제 이 변수를 이용해 직업별 월급 차이를 분석하면 됩니다.
직업별 월급 차이 분석하기
월급 변수에 대한 전처리는 02에서 완료했습니다. 월급, 직업 변수의 전처리가 끝났으니 이제 변수 간 관계를 분석하겠습니다.
1. 직업별 월급 평균표 만들기
직업별 월급 평균을 구하겠습니다. 직업이 없거나 월급이 없는 사람은 분석 대상이 아니므로 제외합니다.
job_income <- welfare %>%
filter(!is.na(job) & !is.na(income)) %>%
group_by(job) %>%
summarise(mean_income = mean(income))
head(job_income)
# A tibble: 6 x 2
job mean_income
<chr> <dbl>
1 가사 및 육아 도우미 80.2
2 간호사 241.
3 건설 및 광업 단순 종사원 190.
4 건설 및 채굴 기계운전원 358.
5 건설 전기 및 생산 관련 관리자 536.
6 건설관련 기능 종사자 247.
2. 어떤 직업의 월급이 많은지 알아보기 위해 월급을 내림차순으로 정렬하고 상위 10개를 추출합니다.
top10 <- job_income %>%
arrange(desc(mean_income)) %>%
head(10)
top10
# A tibble: 10 x 2
job mean_income
<chr> <dbl>
1 금속 재료 공학 기술자 및 시험원 845.
2 의료진료 전문가 844.
3 의회의원 고위공무원 및 공공단체임원 750
4 보험 및 금융 관리자 726.
5 제관원 및 판금원 572.
6 행정 및 경영지원 관리자 564.
7 문화 예술 디자인 및 영상 관련 관리자 557.
8 연구 교육 및 법률 관련 관리자 550.
9 건설 전기 및 생산 관련 관리자 536.
10 석유 및 화학물 가공장치 조작원 532.
3. 그래프 만들기
이제 앞에서 만든 표를 이용해 그래프를 만들겠습니다. 직업 이름이 길기 때문에 그래프를 기본값으로 만들면 x축이 서로 겹쳐 알아볼 수 없습니다. coord_flip()을 추가해 막대를 오른쪽으로 90도 회전하겠습니다.
ggplot(data = top10, aes(x = reorder(job, mean_income), y = mean_income)) +
geom_col() +
coord_flip()
출력된 표와 그래프를 보면 '금속 재료 공학 기술자 및 시험원'이 평균 845만 원으로 가장 많은 월급을 받고, 그 다음으로는 '의료진료 전문가', 의회의원 고위공무원 및 공공단체임원', '보험 및 금융 관리자'의 월급이 많다는 것을 알 수 있습니다.
4.이번에는 어떤 직업들의 월급이 적은지 알아보기 위해 월급이 하위 10위에 해당하는 직업을 추출하겠습니다. 그래프는 앞에서 만든 상위 10위 그래프와 비교할 수 있도록 y축을 0~850까지 표현되게 설정하겠습니다.
# 하위 10위 추출
bottom10 <- job_income %>%
arrange(mean_income) %>%
head(10)
# 그래프 만들기
ggplot(data = bottom10, aes(x = reorder(job, -mean_income),
y = mean_income)) +
geom_col() +
coord_flip() +
ylim(0,850)
출력된 표와 그래프를 보면 '가사 및 육아 도우미'의 월급이 평균 80만 원으로 가장 적고, 그 뒤로는 '임업관련 종사자', '기타 서비스 관련 단순 종사원', '청소원 및 환경 미화원'의 월급이 적다는 것을 알 수 있습니다.
상,하위 분석 결과를 비교하면 가장 많은 월급을 받는 '금속 재료 공학 기술자 및 시험원'이 '가사 및 육아 도우미'의 열 배가 넘는 월급을 받는다는 것을 알 수 있습니다.
'R > 쉽게 배우는 R 데이터분석' 카테고리의 다른 글
한국인의 삶을 파악하라! -08 (0) | 2020.03.05 |
---|---|
한국인의 삶을 파악하라! -07 (0) | 2020.03.04 |
한국인의 삶을 파악하라! -05 (0) | 2020.03.04 |
한국인의 삶을 파악하라! -04 (0) | 2020.03.03 |
한국인의 삶을 파악하라! -03 (0) | 2020.03.03 |