Goals복지패널데이터 다운로드, 변수 이름을 분석하기 쉽게 변경, 성별에 따른 월급 차이, 그래프 생성시 NA값 제외이상치 NA로 처리하기, label 붙이기, 막대 색 채우기 : fill
# 복지 패널 데이터 https://github.com/youngwoos/Doit_R 에서 다운로드
+ 한국복지패널데이터_etc에서 관련 자료 다운로드
+ 참고용 codebook
rm(list=ls())
#통계 전용 프로그램 SPSS에서 만들어진 sav file을 읽어서
#데이터 프레임을 생성하려면 foreign 패키지가 필요
# 분석에 필요한 패키지들을 검색 경로에 로드
library(foreign)
library(dplyr)
library(ggplot2)
library(readxl)
search()
# 데이터 구조 확인
str(welfare)
table(welfare$h10_g3)
table(welfare$h10_g4)
table(welfare$h10_g10)
table(welfare$h10_reg7)
- 변수 이름들을 분석하기 쉽게 변경
#rename(데이터프레임, 바꿀 이름 = 원래 변수 이름)
welfare <- welfare %>%
rename(gender = h10_g3,
birth = h10_g4,
marriage = h10_g10,
religion = h10_g11,
code_job = h10_eco9,
income = p1002_8aq1,
code_region = h10_reg7)
- 성별에 따른 월급 차이 ?
table(welfare$gender) # 성별 도수분포표
# 성별변수에는 이상치가 없다. 이상치가 있다면 N/A처리를 해야한다.
# 만약에 이상치가 있는 경우에는 이상치를 NA로 처리
welfare$gender <- ifelse(welfare$gender %in% c(1,2),
welfare$gender, NA)
ggplot(data = welfare, mapping = aes(x = gender))+geom_bar()
#성별은 질적 변수 (qualitative variable):
# 1, 2라는 숫자(의 크기)가 중요한 게 아니라, 남/여 구분이 중요
# gender 변수를 factor로 만듦.
welfare$gender = factor(welfare$gender,
levels = c(1,2),
labels = c("남자",'여자'))
x 축 이름이 변경됨.
- 막대 색 채우기
ggplot(data = welfare, mapping = aes(x = gender, fill = gender))+geom_bar()
#월 급여(income)
> class(welfare$income)
[1] "numeric" # income의 데이터타입은 숫자
# 양적 변수(quantative variable)
# income 변수의 요약정보
> summary(welfare$income)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's # 만약 income 변수의 값에 9999가 있으면 NA로 바꾸어야 한다 (이상치)
0.0 122.0 192.5 241.6 316.6 2400.0 12030
# summary 함수를 사용해서 이상치가 없음을 확인함. 이상치가 있다면,
welfare$income <- ifelse(welfare$income >= 0 & welfare$income < 9999,
welfare$income, NA)
# 성별 평균 한달 급여
welfare %>%
group_by(gender) %>%
summarise(income_by_gender = mean(income, na.rm =T))
welfare %>%
filter(!is.na(income)) %>%
group_by(gender) %>%
summarise(income_by_gender = mean(income))
gender income_by_gender
<fct> <dbl>
1 남자 312.
2 여자 163.
income_by_gender = welfare %>%
filter(!is.na(income)) %>%
group_by(gender) %>%
summarise(mean = mean(income))
ggplot(data=income_by_gender,
mapping = aes(x = gender, y = mean, fill = gender))+
geom_col()
#급여의 분포
ggplot(data = welfare, mapping = aes(x= income))+
geom_bar(width = 100) width : 막대 하나의 가로길이. 개별값이 너무 많아서 그래프 자동 생성이 안됨.
Warning messages:
1: Removed 12044 rows containing non-finite values (stat_count).
2: position_stack requires non-overlapping x intervals
# 나이(연령)에 따른 급여 ?
# 태어난 연도 도수분포표
table(welfare$birth)
#NA 여부 확인
table(is.na(welfare$birth))
#welfare 데이터 프레임에 age(나이) 변수 추가
#나이 계산은 통계 데이터 조사 시점(2015) 을 기준
welfare$age = 2015- welfare$birth
summary(welfare$age)
ggplot(data = welfare, mapping = aes(x = age))+ geom_bar()
income_by_age = welfare %>%
filter(!is.na(income)) %>% #income이 na인 경우는 제외
group_by(age) %>% # 연령대별 그룹
summarise(mean = mean(income)) # 평균 급여 계산
head(income_by_age)
tail(income_by_age)
ggplot(data= income_by_age, mapping = aes(x=age, y=mean)) +
geom_col()
# 연령 & 성별 월급
income_by_age_gender = welfare %>%
filter(!is.na(income)) %>% # income이 na인 경우는 제외
group_by(age, gender) %>%
summarise(mean=mean(income))
head(income_by_age_gender)
ggplot(data = income_by_age_gender, mapping = aes(x = age, y = mean, color = gender))
+ geom_line()
'R > R기초' 카테고리의 다른 글
R11_복지패널 데이터분석3 (0) | 2019.10.17 |
---|---|
R10_복지패널 데이터 분석 2 (0) | 2019.10.16 |
R08_ggplot2를 이용한 여러가지 그래프 (0) | 2019.10.14 |
R07_그래프 만들기 (0) | 2019.10.10 |
R06_ 데이터 정제 (0) | 2019.10.08 |