missing 처리 - is.na(), na.rm=TRUE

작성자안재형|작성시간11.03.26|조회수2,644 목록 댓글 1

### missing은 NA로 입력합니다.

> x=c(10,12,NA,19,20,30)

> x

[1] 10 12 NA 19 20 30


# missing이 있을때 연산 함수를 사용하면 NA를 출력합니다.

> mean(x)

[1] NA


# na.rm=T 를 사용하면 missing을 제거하고 나머지로 연산을 합니다.

> mean(x,na.rm=T)

[1] 18.2


## apply()함수들의 경우는

> x2=matrix(x,ncol=2)

> x2

     [,1] [,2]

[1,]   10   19

[2,]   12   20

[3,]   NA   30


# 첫번째 열에 NA가 있어서 열의 합의 첫번째가 NA이죠.

> apply(x2,2,mean)

[1] NA 23


# 이런식으로 뒤에 na.rm=T를 추가하는데, 이 option은 apply()의 option이 아니고, 바로 앞에 mean의 option을 이런식으로 추가합니다.

> apply(x2,2,mean,na.rm=T)

[1] 11 23


### is.na() - missing이면 그 자리에 TRUE를 출렵합니다.

> is.na(x)

[1] FALSE FALSE  TRUE FALSE FALSE FALSE


# 이렇게 하면 missing이 x에서 제거됩니다. "!"은 "not"입니다. !is.na()는 non-missing을 의미하죠.
> x[!is.na(x)]
[1] 10 12 19 20 30

# 다음을 보면 좀 명확해집니다.
> !is.na(x)
[1]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE

# 즉 "x[!is.na(x)]"는 논리적으로 아래 둘하고 같죠. 
> x[!c(F,F,T,F,F,F)]
[1] 10 12 19 20 30
> x[c(T,T,F,T,T,T)]
[1] 10 12 19 20 30



다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자강성찬 | 작성시간 11.03.26 missing data가 귀찮지만 피하기 어려운 것 중 하나이지요. 잘 보고 갑니다.^^
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼