간단하게 결측값을 가진 관측값을 제거하기를 원할 수도 있다.
여기서 na.omit()을 이용하여 생략하고자 하는 행을 확정하고, 리턴된 오브젝트의 na.action 속성에 생략할 행의 목록이 저장된다.
그런 다음 그러한 관측값들을 데이터세트에서 제거한다.
이번에도 역시 원복을 위해 카피본을 만들어놓고 작업한다.
> ods <- ds
> omit <- NULL
> dim(ds[vars])
[1] 366 24
> sum(is.na(ds[vars]))
[1] 47 // 결측값 47개
> attr(na.omit(ds[vars]),"na.action")
// na.omit 는 NA 값을 전부 제거한 오브젝트를 반환한다
// na.action 는 결측값이 어떻게 처리되었는지를 정의하는 함수 전달
// attr(x, which) : x는 속성에 억세스해야하는 오브젝트, which 는 어떤 속성에 접근해야하는지 알려주는 비어있지 않은 문자열
114 119 128 139 141 175 177 181 190 194 196 201 209 210114 119 128 139 141 175 177 181 190 194 196 201 209 210
212 213 214 222 223 238 248 250 251 256 258 260 263 272
212 213 214 222 223 238 248 250 251 256 258 260 263 272
273 274 279 300 301 303 313 349 352 361
273 274 279 300 301 303 313 349 352 361
attr(,"class")
[1] "omit"
> mo <- attr(na.omit(ds[vars]), "na.action")
> union(omit,mo)
[1] 114 119 128 139 141 175 177 181 190 194 196 201 209 210 212 213 214 222 223
[20] 238 248 250 251 256 258 260 263 272 273 274 279 300 301 303 313 349 352 361
> omit <- union(omit, mo) // 합집합> omit[1] 114 119 128 139 141 175 177 181 190 194 196 201 209 210 212 213 214 222 223
[20] 238 248 250 251 256 258 260 263 272 273 274 279 300 301 303 313 349 352 361
> length(omit)
[1] 38
> if (length(omit)) ds <- ds[-omit,]
> sum(is.na(ds[vars]))
[1] 0 // 관측값 중 NA 없음
> dim(ds[vars])
## [1] 328 24
> ds <- ods // 원복
'프로그래밍 Programming' 카테고리의 다른 글
Data Preparation (16) - Clean (Ensure Target is Categoric) (0) | 2014.12.06 |
---|---|
Data Preparation (15) - Clean (Normalise Factors) (0) | 2014.12.06 |
Data Preparation (13) - Clean (Deal with Missing Values) (0) | 2014.12.06 |
Data Preparation (12) - Clean (Remove Missing Target) (0) | 2014.12.05 |
Data Preparation (11) - Clean (Feature Selection) (0) | 2014.12.05 |