데이터분석/Preprocessing

결측치 제거를 위한 몇가지 팁

늘근이 2017. 8. 13. 15:30

데이터에서 NA값이 있으면 아주 몹쓴 결과치이다.

데이터에 결측치가 있는지 확인

> table(teens$gender, useNA = "ifany")

아예 결측치로 바꿔버릴수도있다.

> teens$age <- ifelse(teens$age >= 13 & teens$age < 20, teens$age, NA)

결측치가 있을때의 mean()메서드

> mean(teens$age)
[1] NA
> mean(teens$age, na.rm = TRUE)
[1] 17.25243

데이터의 부분그룹에 대한 통계를 얻을때는?

> aggregate(data = teens, age ~ gradyear, mean, na.rm = TRUE)
  gradyear      age
1     2006 18.65586
2     2007 17.70617
3     2008 16.76770
4     2009 15.81957

aggreagate함수로,

> ave_age <- ave(teens$age, teens$gradyear, FUN = function(x) mean(x, na.rm = TRUE))
> teens$age <- ifelse(is.na(teens$age), ave_age, teens$age)

결측치를 이렇게 제거했다.

즉, aggregate함수로 그 그룹의 평균을 내게 한다음에 이것을 바로 ifelse로 적용시켜 버린것이다.

interests_z <- as.data.frame(lapply(interests, scale))

위와같이 하면, Z스케일로 바뀌는데, 이러면 비교가 쉬워진다.

> teens_clusters <- kmeans(interests_z, 5)

'데이터분석 > Preprocessing' 카테고리의 다른 글

[링크] lag spark scala  (0) 2018.05.05
R에서의 NA처리 na.approx 주의와 NA채우는 꼼수  (0) 2018.04.21
R eval parse 예  (0) 2018.04.13
%in% 연산자..  (0) 2017.08.10
R - reshape를 이용한 데이터 핸들링  (0) 2017.08.09