데이터에서 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 |