TIL. R day04

hyuko·2022년 11월 14일
0

R Study

목록 보기
4/4

지금 까지 배운 내용으로 간단한 데이터 분석을 해보겠습니다

한국 복지 패널 데이터 분석

분석에 필요한 패키지들을 먼저 install 해줍니다.
install.packages("foreign")
install.packages("dplyr")
install.packages("ggplot2")
install.packages("readxl")

인스톨을 완료 했다면 ,
이 패키지들을 쓰기위해 라이브러리로 들고
오는 작업을 합니다.

library(foreign) # spss 파일 불러올 때 씁니다.
library(dplyr) # 전처리 
library(ggplot2) # 시각화
library(readxl) # 엑셀파일 불러오기

위 처럼 데이터를 분석하기 위한 각각의 패키지들을
쓸 때마다 인스톨을 하고 라이브러리를 들고오면 됩니다.

데이터 불러오기

raw_welfare <- read.spss(file = "경로명 & 파일명", to.data.frame =T)

위의 코드 풀이
변수 <- 에 담는다 spss파일을 읽어온 것을 그 읽어오는 경로는 file = 이며 
이 것은 데이터 프레임 형식으로 가지고 온다. 

위의 코드는 단순히 어떠한 변수에 데이터 프레임 형식으로
spss파일을 불러와 담는 방식입니다.

우리가 데이터 분석을 할 때에 그 파일에 직접 분석을 해도 되지만
기본적으로 본래의 데이터는 유지한체 복사본을 만들어 분석을 하는 것이
통상적 관례입니다.

복사본 만들기

welfare <- raw_welfare

간단합니다 이미 받아온 변수를 또 다른 변수에 담아주기만 하면됩니다.

이제 이 복사본으로 데이터를 분석을 해봅니다.
첫번째로 항상 이 데이터가 어떻게 생겼는지 어떤 형식인지
어떤 컬럼명들이 있는지 확인을 위해 데이터 검토를 시작합니다

데이터 검토하기

head(welfare) # 데이터의 앞부분 확인
dim(welfare) # 데이터가 몇 행, 몇 열로 이루어져 있는지 확인
str(welfare) # 속성 파악
summary(welfare) # 요약 통계량

' 한국 복지 패널 데이터를 분석을 위와 같이 검토해보면
전체를 파악하기 힘들기 때문에 변수명 들을 우리가 알기 쉽게 바꿔줄 필요성이
있다는 것을  알게 됩니다.'

보통 대개의 데이터 들이 우리가 알기 어려운 약자들과 코드들로 
이루어져 있기 때문에 보통 코드북을 따로 엑셀로 주는 편이고
이것을 통해서 따로 변수명을 지정해서 사용해야 합니다.

변수명 바꾸기

welfare <- rename(welfare,
			gender = h10_g3,
            birth = h10_g4,
            married = h10_g10,
            religion = h10_g11,
            code_job = h10_eco9,
            income = p1002_8aq1,
            code_region = h10_reg7)

각각 성별, 생년, 결혼 유무, 종교, 직업, 월급, 지역 등 코드를
알기 쉽게 rename을 통해 바꾸어 주었습니다.

여기까지가 기본 변수를 검토하고 전처리 하는 작업입니다
데이터의 분석 절차로는

  1. 변수 검토 및 전처리 : 이상치 정제, 파생변수 생성, 전처리는 분석에 활용할 변수에 각각 실시
  2. 변수 간 관계분석 : 변수간 관계를 파악해서 -> 그래프를 그립니다.

바꾸어 놓은 변수를 이용해서 간단히 분석을 시작해봅니다.

성별에 따른 월급차이

변수 검토

class(welfare$gender)
table(welfare$gender) # 빈도 출력

# 이상치 확인
welfare$gender <- ifelse(welfare$gender == 9, NA,
						ifelse(welfare$gender == 1, "male", "female")

이 코드를 풀이 하자면..
만약 gender라는 곳에 9라는 이상치가 있으면 이 것은 NA로 두고
그게 아니라면 1이 있다면 male , 아니라면 female로 바꾸어서 다시 대입해라

# 월급 변수 검토
class(welfare$income)
table(welfare$income)

welfare$income <- ifelse(welfare$income == 9999 | welfare$income == 0 ,NA, welfare$income)

성별 월급 평균표 만들기

gender_income <- welfare %>%
	filter(!is.na(income)) %>%
    group_by(gender) %>%
    summarise(mean_income = mean(income))
    
# 그래프로 표현하기
ggplot(data = gender_income, aes(x = gender, y = mean_income)) +
	geom_col()

나이와 월급의 관계 - 몇살에 월급이 가장 많을까?

class(welfare$birth)
table(welfare$birth)

summary(welfare$birth)
qplot(welfare$birth)

' 위의 검토로 알 수 있는 내용으로는 매우 다양한 연령대를 대상으로
조사를 했구나 라는 것을 알 수 있다.'

전처리

이상치 확인
summary(welfare$birth)

결측치 확인
table(is.na(welfare$birth))

이상치 결측 처리 (이상치가 발견되었을 때만 실행해준다.)

# 파생변수 생성
' 우리가 알고 있는 값은 birth 즉 생년이다 나이를 알려면
2015년도 기준 데이터 값이기에 2015에서 태어난 연도를 뺀후
한국은 태어날 때부터 1살이기에 1을 더해주면 나이가 된다.'

welfare$age <- 2015 - welfare$birth + 1

나이와 월급 관계 분석

age_income <- welfare %>%
	filter(!is.na(income)) %>%
    group_by(age) %>%
    summarise(mean_income = mean(income))
    
 # 그래프 찍어보기
 ggplot(data = age_income, aes(x = age, y = mean_income)) +
 	geom_line()

연령대에 따른 월급차이

변수 검토 및 분석

welfare <- welfare %>%
	mutate(ageg = ifelse(age < 30, "young",
    		ifelse(age < 60 , "middle", "old")))
각각의 기준을 두어 새로운 파생변수를 바로 생성한다
바로 영, 미들, 올드

연령대를 세가지로 간단하게 나누어 월급평균과 관계분석시작

ageg_income <- welfare %>%
	filter(!is.na(income)) %>%
	group_by(ageg) %>%
    summarise(mean_income = mean(income))
    
# 그래프로 표현하기
ggplot(data = ageg_income, aes(x = ageg, y = mean_income)) +
	geom_col() # 막대그래프는 알파벳 순으로 정렬된다. 이것을 영,미들,올드순바꾸기
    
ggplot(data = ageg_income, aes(x = ageg, y = mean_income)) +
	geom_col() +
    scale_x_discrete(limits = c('young', 'middle', 'old'))
profile
백엔드 개발자 준비중

0개의 댓글