반전공자

R - welfare.csv, 결측치 대체 함수 작성 본문

데이터분석/R

R - welfare.csv, 결측치 대체 함수 작성

하연01 2021. 5. 9. 12:45
welfare<-read.csv("welfare.csv")

library(dplyr)
library(ggplot2)

# midterm 기출문제 

# 1- old(60이상), middle(30-60), young(30이하)으로 나누기 
welfare<-  mutate(welfare, age_group=(ifelse(2021-birth>=60, "old",
                                    ifelse(2021-birth<30, "young", "middle"))))
        
# income의 9999.00 이상치처리하기.
welfare$income <- ifelse(welfare$income==9999.00, NA, welfare$income)

# 1- income의 이상치 제거하고 그래프 그림 (9999.00)
dataw<- welfare %>% select(age_group, income) %>% group_by(age_group) %>% 
        filter(!is.na(income)) %>% 
        summarise(mean_income=mean(income)) 

ggplot(dataw, aes(x=age_group, y=mean_income))+geom_col()

 

 

 

middle(30~60) 그룹의 수입이 가장 많다. 

young(30 under) 그룹의 수입이 가장 적다. 

 

#  지역 코드 별 지역이름 지정하기 
welfare$code_region[welfare$code_region== 1]<-"서울"
welfare$code_region[welfare$code_region== 2]<-"광주/전남/전북/제주도"
welfare$code_region[welfare$code_region== 3]<-"수도권(인천/경기)"
welfare$code_region[welfare$code_region== 4]<-"부산/경남/울산"
welfare$code_region[welfare$code_region== 5]<-"대구/경북"
welfare$code_region[welfare$code_region== 6]<-"대전/충남"
welfare$code_region[welfare$code_region== 7]<-"강원/충북"

# 2- 그래프 그리기 위한 데이터 지정, 그래프 그림 
wel_re<- welfare %>% select(code_region, income) %>% filter(!is.na(income)) %>% 
         group_by(code_region) %>% summarise(mean_income = mean(income))

ggplot(wel_re, aes(x = mean_income, y = code_region))+geom_col()



맥북에서는 한글이 지원되지 않는다고 한다. 

그래서 그래프의 글자가 깨져보인다.

 

 

 

#  결측치 평균으로 대체하는 함수 만들기 
x = c(7, 12, 9, 15, NA, 8, 14, 2, 9, NA, 8)


replacena = function(...){
  mean = mean(..., na.rm = T)
  i <- ifelse(is.na(...), mean, ...)
  print(i)
}

 

입력되는 값의 개수가 정해져있지 않기 때문에 괄호 안에 ... 을 입력해준다.