13. 결측치(Missing value) 처리 - df[ is.na( ), ] 활용 / summary()함수
결측치
setwd('c:/users/is2js/R_da/')
#### 결측치(Missing value)처리 - [is.na(칼럼인덱싱), ]활용 / summary()활용 ####
# NA/NULL의 기본 형식으로 값이 비어있거나 다양한 형식(NILL)으로 숨어있는 값
# - 가장 재수없는 것은 .. 빈칸...
#### 데이터 준비 ####
data("Orange")
dim(Orange) # row와 칼럼수를 한번에 파악할 수 있다.
#nrow(Orange)
#ncol(Orange)
set.seed(1228)
# *** 모든칼럼에 대해 평등하게 랜덤 NA를 억지로 넣어주기 위해 행렬연산을 이용한다.***
# df를 matrix로 바꾸면, n X m 요소에 접근시 칼럼을 넘어가도 순서대로 붙어버린다.
# 그래서 1차원 벡터연산(1차원 인덱싱)으로만으로도 모든 요소에 접근이 가능해진다.
df = as.matrix(Orange)
# 1부터 행x열값까지의 수중에 랜덤하게 10개를 뽑아,
# 행인덱싱 자리에 넣어, 해당 행 전체에 NA를 집어넣는다.
df[sample(1:(nrow(df) * ncol(df)), size = 10) ] = NA
df = as.data.frame(df)
df
#### 1. is.na($칼럼인덱싱) 을 이용한 결측치 확인 ####
df[is.na(df$Tree), ]
df[is.na(df$age), ]
df[is.na(df$circumference), ]
df[(is.na(df$Tree))|(is.na(df$age)),]
df[(is.na(df$Tree))&(is.na(df$age)),]
# 값을 대입을 할려고보니, 오류가 난다.
df[is.na(df$Tree), "Tree"] = 123
# sapply(df, "class")로 속성확인! 을 해보니 factor였다.***
sapply(df, "class")
#### factor의 결측치 처리를 하는 -> NA에 넣을 값을 levels에 추가한다.. ####
# 1. 해당 칼럼인덱싱으로 levels확인
df[ , "Tree"] # 1,2,3,4,5 5개의 levels이 있다.
# 2. levels를 하나 더 추가해준다.
df[ , "Tree"] = factor(df$Tree, levels = c(1:5, 123))
df[is.na(df$Tree), "Tree"] = 123
# 3. 만약 다양한 levels이 적혀있다면, 직접 levels를 적어주기 곤란하다.
levels(df$Tree) # 이것을 factor의 levels에 적어준다.
df[ , "Tree"] = factor(df$Tree, levels = c(levels(df$Tree), 123))
#### 2. summary() ####
# - NA에 대해서만 칼럼별로 쉽게 파악 가능하다.
# - NULL 등은 따로 확인해야한다.
summary(df)
'한의대 생활 > └ R studio 중급 문법' 카테고리의 다른 글
12. 이상치(Outliers) 확인 - df[ , ]에 order() 인덱싱 / quantile() 활용하기 / ggplot / boxplot (0) | 2018.12.29 |
---|---|
11. 벡터연산( df[ df$aa == , ] / dplyr - filter(df, 칼럼명)함수로 필터링하기 (0) | 2018.12.29 |
10. 사용자 정의 함수( 기초 + 응용) (0) | 2018.12.29 |
9. beyond for loop - apply() MARGIN=1,2로 FUN=통계class확인 / sapply() 세로 특화 / ifelse(기준칼럼으로 조건문, y, n)로 값 할당 (0) | 2018.12.29 |
8. R reshape2패키지를 활용한 Pivoting (0) | 2018.12.29 |