brunch

You can make anything
by writing

C.S.Lewis

by 쩐시 Aug 09. 2021

R 프로그래밍 - Project1

완벽한 논문을 위한 R 프로그래밍 분석

논문 작성 시 필요한 R 프로그래밍을 혼자서 해보겠다고 한지 몇 달 된 것 같다... 마감이 몇 달 안남았는데 다시 보기가 싫은 이 마음!


통계를 통해서 단계분석표는 물론 복잡한 회귀분석으로 기술분석 해야하는데 참.. 몸은 게으른데 마음은 안따라줘서 힘들다 (결론은 게을러서 안하고 있다는 뜻)


수업에서 배운 첫 번째 프로젝트를 정리하였다.

하고나면 너무 뿌듯하고 멋진데, 혼자 응용하려면 역시나 실패!

과한 욕심내지 말고 머리를 비우는 수밖에 없을 것 같다 ㅠㅠ


+ R cheat_sheet 첨부




한국복지패널 데이터를 활용한 한국인의 삶 분석


주소 : www.koweps.re.kr

조사목적 : 빈곤층 및 차상위층의 가구형태, 소득수준, 취업상태 관련 실태변화 파악하여 정책지원에 기여

수집방법 : 설문조사를 통한 질의 답변

가구 추적 조사 : 약 5,000가구, 15,000명

변수 - 1,000여개, -> 활용 변수는 3 항목으로 가정(성별, 태어난 연도, 가처분 소득)


실습 전 준비하기


## SPSS 데이터용 패키지 설치

install.packages("foregin") ->  SAS, SPSS 데이터셋을 불러올 때 사용한다


## 패키지 로드

library(foreign)

library(dplyr)

livbrary(ggplot2)


## SPSS 데이터 불러오기

raw_welfare <- read.spss("data_spss_Koweps2014.sav", to.data.frame = T)

welfare <- raw_welfare -> 카피의 습관화


## 데이터 검토 (5가지) - 파악 후 설계

dim(welfare)

str(welfare)

head(welfare)

summary(welfare)

View(welfare)


## 활용변수명 변경 -> 코딩북 참고

코딩북, 활용변수 목록

welfare <- rename(welfare, 

                  sex = h0901_4,

                  birth = h0901_5,

                  income = h09_din)


분석1: 성별에 따른 소득


## 절차

1. 성별 - 변수검토 및 정제 (변수검토, 수정 -> 정제:이상치 확인 및 결측처리)

2. 소득 - 변수검토 및 정제 (변수검토, 수정 -> 정제:이상치 확인 및 결측처리)

3. 성별 소득 평균 분석 (표생성 -> 그래프 생성)


1-1. 설별 - 변수검토 및 정제


class(welfare$sex) -> 속성 파악 "numeric"

summary(welfare$sex)

table(welfare$sex) -> 무응답 "9" 확인


welfare$sex <- ifelse(welfare$sex == 9, NA, welfare$sex ) -> 이상치 정제

table(is.na(welfare$sex))


1-2. 성별 - 변수값 변경


welfare$sex <- ifelse(welfare$sex ==1, "male", "female")


table(welfare$sex)

qplot(welfare$sex)

변경 한 성별 값, 가구주 대상으로 남성의 수가 더 많다


2-1. 소득 - 변수검토 및 수정


class(welfare$income) "numeric"

summary(welfare$income)


qplot(welfare$income)

수정 전 소득 값, x축 설정이 안되어 분석이 모호하다

qplot(welfare$income) + xlim(0, 10000)

수정 후 소득 값, 고르게 분포한 것을 확인할 수 있다


2-2. 소득 - 이상치 확인 및 결측처리


table(is.na(welfare$income)) -> FALSE


3. 성별 소득 평균 분석


sex_income <- welfare %>% 

  group_by(sex) %>%  -> 성별에 따른

  summarise(mean_income = mean(income)) -> 평균 소득


ggplot(data = sex_income, aes(x = sex, y = mean_income)) + geom_col()

성별 평균 소득 분석 그래프
체크
- 가구주의 성별
- 여성 가구수/ 1인가구/ 미혼 등

가능성 검토&분석
- 1인가구 제외?
- 가구들끼리 결합? 등

"데이터 활용 아이디어를 생각해보자"


분석2: 나이에 따른 소득


## 절차

1. 나이 - 변수검토 및 정제 (변수검토, 수정 -> 정제:이상치 확인 및 결측처리)

2. 소득 - 변수검토 및 정제 (변수검토, 수정 -> 정제:이상치 확인 및 결측처리)

3. 나이별 소득 평균 분석 (표생성 -> 그래프 생성)


1-1. 나이 - 변수검토 및 정제


class(welfare$birth) "numeric"

summary(welfare$birth)


qplot(welfare$birth)

수정 전, 태어난 년도 값 그래프 생성


1-2. 나이 - 이상치 확인


table(welfare$birth) -> 코딩북의 이상치 값인 "9999" 유무 확인


1-3. 나이 - 변수 생성


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

summary(welfare$age)


qplot(welfare$age) -> 더 직관적으로 분석이 가능하다

수정 후, 나이 값 그래프 생성


2. 소득 - 변수검토 및 정제 (기완료)


3. 나이별 소득 평균 분석


age_income <- welfare %>% 

  group_by(age) %>%  -> 나이별

  summarise(mean_income = mean(income)) -> 평균 소득 


ggplot(data = age_income, aes(x = age, y = mean_income)) + geom_point() 

나이별 소득 평균 - 산점도(연속변수의 경우)


분석3: 연령대에 따른 소득


## 절차

1. 연령대 - 변수검토 및 정제 (변수검토, 수정 -> 정제:이상치 확인 및 결측처리)

2. 소득 - 변수검토 및 정제 (변수검토, 수정 -> 정제:이상치 확인 및 결측처리)

3. 연령대별 소득 평균 분석 (표생성 -> 그래프 생성)


1. 연령대 - 변수검토 및 정제


welfare <- welfare %>% 

  mutate(ageg = ifelse(age < 30, "young",

                       ifelse(age <= 59, "middle", "old"))) -> 연령대 변수 생성


table(welfare$ageg)

middle    old  young 

  3004   3979     65       -> "young"의 대표성 없음, 제외 결정


qplot(welfare$ageg)


연령대 값 그래프 생성,  "young"변수의 대표성 없음 - 제외


2. 소득 - 변수검토 및 정제 (기완료)


3. 연령대별 소득 평균 분석


welfare_income <- welfare %>% 

  filter(ageg != "young") %>%  -> "young" 변수를 제외한

  group_by(ageg) %>%  -> 연령대별

  summarise(mean_income = mean(income)) -> 평균 소득


welfare_income

# A tibble: 2 x 2

  ageg   mean_income

  <chr>        <dbl>

1 middle       5018.

2 old          2049.


분석3: 연령대 및 성별에 따른 소득


## 절차

1. 연령대 및 성별 소득 평균 분석 (표생성 -> 그래프 생성)


1-1 연령대 및 성별 소득 평균표 생성


sex_income <- welfare %>% 

  filter(ageg != "young") %>%  -> "young"변수를 제외한

  group_by(ageg, sex) %>% -> 연령대 및 성별

  summarise(mean_income = mean(income)) -> 평균 소득


sex_income


# A tibble: 4 x 3

# Groups:   ageg [2]

  ageg   sex    mean_income

  <chr>  <chr>        <dbl>

1 middle female       2869.

2 middle male         5420.

3 old    female       1179.

4 old    male         2674.


1-2. 연령대 및 성별 소득 그래프 생성


ggplot(data = sex_income, aes(x = ageg, y = mean_income, fill = sex)) + geom_col()

연령대별 소득 그래프 + 성별 구분 - 누적 막대 그래프

ggplot(data = sex_income, aes(x = ageg, y = mean_income, fill = sex)) + geom_col(position = "dodge") ## position 변경(default = "stack")

연령대별 소득 그래프 + 성별 구분 - 복합 막대 그래프

개인적으로 이 데이터에는 복합형 막대 그래프가 더 적합하다고 생각한다.


작가의 이전글 SQL 구문정리
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari