언어/R

6. 실습: 한국 복지 패널 데이터 분석 2

차가운오미자 2021. 6. 15. 19:18

데이터 불러오기, 데이터 전처리, 변수 이름 바꾸기 등의 내용은

5. 실습: 한국 복지 패널 데이터 분석 1 에 있음!

https://chagaun-omija.tistory.com/56

 

5. 실습: 한국 복지 패널 데이터 분석 1

0. 한국 복지 패널 데이터 는 다음 사이트에서 다운받을 수 있다. https://www.koweps.re.kr:442/data/data/list.do 다만, 데이터를 받기 위해서는 회원가입 후 로그인 해야 하며, 데이터를 사용하고자 하는 목

chagaun-omija.tistory.com

 

1. 직종 별 임금 비교분석

직종 데이터 (code_job) 은 112, 101 등의 숫자로 되어 있는데 그 항목이 매우 많다. table로 그려봐도 뭐가 뭔지 알 수 없다. 이에 대한 내용은 (2020년 15차 한국복지패널조사) 조사설계서-가구용(beta1).xlsx 인데 이를 불러와서 기존의 welfare데이터와 병합해야 한다. 그래야 숫자로 되어 있는 코드들이 우리가 알아볼 수 있는 한국어로 바뀐다.

(2020년 15차 한국복지패널조사) 조사설계서-가구용(beta1).xlsx 중 직종코드 시트

이게 column 명이 code에 지정이 안되어 있어서 그냥 코드북 xlsx 파일을 따로 만들었다.

파일명은 code_job_list.xlsx 이며 거의 똑같이 생겼다

list_job <- read_excel("code_job_list.xlsx", col_names=T)
head(list_job)

list_job$code_job <- as.double(list_job$code_job)
welfare <- left_join(welfare, list_job, id = 'code_job')
head(welfare)

 

그냥 read_excel() 후에 바로 join을 하려면 에러가 뜬다. 

Error: Can't join on 'x$code_job' x `y$code_job` because of incompatible types.`x$code_job` is of type <double>>.`y$code_job` is of type <character>>.이라고 뜬다. 결국 타입이 달라서 조인을 못하는 거기 때문에, list_job 에 있는 code_job 데이터들을 다 double로 바꿔주었다. 이때 사용한 함수가 as.double()이다. 

 

이렇게 하면 left_join() 을 이용해 code_job을 공통으로 하게 합쳐진다.

head(welfare)로 끝에 잘 추가 되어있는지 확인하고,

 

직업명들을 사용해야하는데, '소분류' 라고 column이 되어 있는게 불편해서 rename해주었다.

welfare <- rename(welfare, job_name = "소분류")
head(welfare)

이제 본격적으로 데이터를 추출한다. 

직업 별 income 평균을 추출한다.

job_income <- welfare %>% 
  filter(!is.na(income1)) %>% 
  group_by(job_name) %>% 
  summarise(income_mean = mean(income1)) %>% 
  arrange(desc(income_mean)) %>% 
  head(20)

job_income
ggplot(data=job_income, aes(x=job_name, y=income_mean))+geom_col()+coord_flip()

마지막에 그래프까지 그려준다.

 

2. 성별 직업 분포

비슷하게 식만 잘 세우면 된다.

1. filter를 통해 여성의 데이터만 추출하고,

2. job_name 별로 묶어준 후에,

3. summarize()를 통해서 해당하는 데이터 수를 세고,

4. 너무 많을 수 있으니까 top 20 직업들만 추출해서

 

ggplot을 이용해서 그래프를 그려주면 된다. 

#성별 직업 분포

woman_job <- welfare %>% 
  filter(sex == 'female') %>% 
  group_by(job_name) %>% 
  summarize(n = n()) %>% 
  head(20)

woman_job
ggplot(data=woman_job, aes(x=job_name, y=n))+geom_col()+coord_flip()

 

 

'언어 > R' 카테고리의 다른 글

5. 실습: 한국 복지 패널 데이터 분석 1  (0) 2021.06.15
[TS] foreign package is not available  (0) 2021.06.15
4. 그래프 그리기  (0) 2021.06.15
3. 데이터 전처리  (0) 2021.06.15
2. 미국 인구 데이터(midwest) 실습  (0) 2021.06.15