DBILITY

R arithmetic operation and deal with NA (Not Assign-missing data) 본문

statistics/R

R arithmetic operation and deal with NA (Not Assign-missing data)

DBILITY 2018. 11. 23. 16:31
반응형

사칙연산 등 직접 해보면 된다.

기술통계의 기본 함수들을 시험했다.

#나머지 mod
> 7%%3
[1] 1
#몫
> 7%/%3
[1] 2
#나누기
> 7/3
[1] 2.333333
#자승
> 2^2
[1] 4
> 2^3
[1] 8
#제곱근
> sqrt(2)
[1] 1.414214
> sqrt(2)^2
[1] 2

> x<-c(1,2,3,4,5)
> str(x)
 num [1:5] 1 2 3 4 5
> class(x)
[1] "numeric"
#합계
> sum(x)
[1] 15
#최대값
> max(x)
[1] 5
#최소값
> min(x)
[1] 1
#평균값
> mean(x)
[1] 3
#표본분산
> var(x)
[1] 2.5
#표본표준편차
> sd(x)
[1] 1.581139
#중위수
> median(x)
[1] 3

> x<-c(1,2,3,4,5,3)
> x
[1] 1 2 3 4 5 3
#중복제거
> unique(x)
[1] 1 2 3 4 5
#두 번째 인수에서 첫 번째 인수와 (첫 번째) 일치하는 위치의 벡터를 반환
> match(x,unique(x))
[1] 1 2 3 4 5 3
#벡터의 각 원소의 출현 횟수계산
> tabulate(x)
[1] 1 1 2 1 1
> tabulate(match(x,unique(x)))
[1] 1 1 2 1 1
#벡터 최대값의 인덱스
> which.max(tabulate(x))
[1] 3
#최빈값
> z<-unique(x)
> z[which.max(tabulate(match(x,z)))]
[1] 3

#다음과 같이도 된다.
x<-c(1,2,3,4,5,3,'a')
x
> table(x)
x
1 2 3 4 5 a 
1 1 2 1 1 1 
> which.max(table(x))
3 
3 
#최빈값
> names(which.max(table(x)))
[1] "3"

 

결측치(missing data) NA에 대한 연산은 NA를 업무적으로 어떻게 정의하느냐에 따라 달라질 수 있다.

만약 NA에 대한 처리 없이 연산을 할 경우 결괏값은 NA가 된다.

ASA 미국 상업 항공편 운항 통계 데이터에 출발,도착시간에 NA가 있었던 거 같다. 그땐 왜 저렇게 표시를 했나 생각했는데, 의미 있는 것이었구먼.

연산용 함수들에 옵션으로 na.rm=TRUE로 설정 시 제거하고 계산하나 보다.

 

na.으로 시작하는 함수들에 다음과 같은 것이 있다.

na.fail(object, ...)

na.omit(object, ...)

na.exclude(object, ...)

na.pass(object, ...)

> x<-c(1,2,NA,4,5)
> sum(x)
[1] NA
> sum(x, na.rm = TRUE)
[1] 12
> mean(x)
[1] NA
> mean(x, na.rm = TRUE)
[1] 3
> max(x)
[1] NA
> max(x, na.rm = TRUE)
[1] 5
> min(x)
[1] NA
> min(x, na.rm = TRUE)
[1] 1
> var(x)
[1] NA
> var(x, na.rm = TRUE)
[1] 3.333333
> sd(x)
[1] NA
> sd(x, na.rm = TRUE)
[1] 1.825742
> median(x)
[1] NA
> median(x, na.rm = TRUE)
[1] 3

> df<-data.frame(a=c(1,2,3),b=c('a',NA,'c'),c=c('a','b',NA))
> df
  a    b    c
1 1    a    a
2 2 <NA>    b
3 3    c <NA>
> na.fail(df)
Error in na.fail.default(df) : 객체안에 결측값들이 있습니다
> na.omit(df)
  a b c
1 1 a a
> na.exclude(df)
  a b c
1 1 a a
> na.pass(df)
  a    b    c
1 1    a    a
2 2 <NA>    b
3 3    c <NA>

 

반응형
Comments