갈루아의 반서재

간단하게 결측값을 가진 관측값을 제거하기를 원할 수도 있다.

여기서 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 210 

114 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 // 원복