본문 바로가기
R/Data Operation

R 벡터 Vector 관련 내장함수

by 통계열등생 2020. 11. 10.
반응형
  • 최대최소 함수
min(x, na.rm=FALSE) 원소(벡터)의 최소값
max(x, na.rm=FALSE) 원소(벡터)의 최대값
which.min(x) 원소(벡터) 내의 최소값 인덱스
which.max(x) 원소(벡터) 내의 최대값 인덱스
pmin(x, na.rm=FALSE) 여러 벡터에서 병렬 별로 최소값
pmax(x, na.rm=FALSE) 여러 벡터에서 병렬 별로 최대값 

 

> vec = sample(1:100, 10)
> vec
 [1] 41 85 38  6  5 95 42  8 43 51
> min(vec)
[1] 5
> max(vec)
[1] 95
> which.min(vec)
[1] 5
> which.max(vec)
[1] 6

 

> v1 = sample(1:100, 5)
> v2 = sample(1:100, 5)
> v3 = sample(1:100, 5)
> cat('', v1, '\n', v2, '\n', v3, '\n')
 55 85 31 44 17 
 98 22 20 51 75 
 61 69 44 19 83 
> pmin(v1, v2, v3)
[1] 55 22 20 19 17
> pmax(v1, v2, v3)
[1] 98 85 44 51 83

 

 

 

  • 기술통계량 함수
range(x, na.rm=FALSE)  원소(벡터)의 범위(최소값 ~ 최대값)
mean(x, na.rm=FALSE)  원소(벡터)평균값
median(x, na.rm=FALSE)  원소(벡터)의 중위수
sum(x, na.rm=FALSE)  원소(벡터)의 합계
var(x, na.rm=FALSE) 원소(벡터)의 분산
sd(x, na.rm=FALSE) 원소(벡터)의 표준편차
summary(x)  데이터에 대한 기본적인 통계 정보요약

 

> vec = c(41, 85, 38, 6, 5, 95, 42, 8, 43, 51)
> vec_na = c(41, 85, 38, NA, 5, 95, 42, 8, 43, 51)
> range(vec)
[1]  5 95
> range(vec_na)
[1] NA NA
> range(vec_na, na.rm=T)
[1]  5 95

벡터 안에 결측치가 포함되어 있다면 range() 함수의 출력값은 최소최대 모두 NA가 된다. 결측치를 제외하고 범위를 알기 위해서 na.rm=TRUE 를 함수안에 인수로 지정해주면 정상적으로 벡터의 범위가 출력된다.

na.rm=TRUE 인수는 range() 함수뿐만 아니라 많은 함수에서 사용할 수 있다.

 

> # 평균
> mean(vec)
[1] 41.4
> mean(vec_na, na.rm=T)
[1] 45.33333
> 
> # 중위수
> median(vec)
[1] 41.5
> median(vec_na, na.rm=T)
[1] 42
> 
> # 합계
> sum(vec)
[1] 414
> sum(vec_na, na.rm=T)
[1] 408
> 
> # 분산
> var(vec)
[1] 952.7111
> var(vec_na, na.rm=T)
[1] 897.75
> 
> # 표준편차
> sd(vec)
[1] 30.86602
> sd(vec_na, na.rm=T)
[1] 29.96248

 

> summary(vec)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    5.0    15.5    41.5    41.4    49.0    95.0 
> summary(vec_na)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
   5.00   38.00   42.00   45.33   51.00   95.00       1

기초통계량을 보여주는 summary() 함수는 데이터에 포함된 결측치의 수를 알려준다.

 

 

 

  • 순서 함수
sort(x, decreasing=FALSE) 원소(벡터) 정렬 
order(x, decreasing=FALSE)  원소(벡터)정렬되기 이전의 인덱스
rank(x)  원소(벡터)각 원소의 순위

 

> vec = sample(1:100, 10)
> cat(vec,'\n=>', sort(vec), '\n')
78 93 80 27 63 50 95 71 7 9 
=> 7 9 27 50 63 71 78 80 93 95 
> cat('이전index :', order(vec), '\n')
이전index : 9 10 4 6 5 8 1 3 2 7 
> cat('순위 :', rank(vec), '\n')
순위 : 7 9 8 3 5 4 10 6 1 2 

order() 함수는 정렬된 값이 정렬되기 전의 index를 반환한다.

sort() 함수를 사용해 정렬한 값은 아래 예시처럼 변수를 선언해 값을 받아주어야 저장된다. 

 

> vec_sort = sort(vec)
> vec_sort
 [1]  7  9 27 50 63 71 78 80 93 95
> rank(vec_sort)
 [1]  1  2  3  4  5  6  7  8  9 10

 

> cat(vec,'\n=>', sort(vec, decreasing=T), '\n')
78 93 80 27 63 50 95 71 7 9 
=> 95 93 80 78 71 63 50 27 9 7 
> cat('이전index :', order(vec, decreasing=T), '\n')
이전index : 7 2 3 1 8 5 6 4 10 9 

decreasing=TRUE 는 sort() 함수와 order() 함수의 인수로 사용할 수 있고, 내림차순 정렬할 때 TRUE를 입력한다.

 

 

 

  • 수학 함수
abs(x) 절대값
sqrt(x) 제곱근
factorial(x) 팩토리얼 함수
prod(x, na.rm=FALSE) 벡터의 원소들의 곱
cumsum(x) 벡터의 원소들의 누적합
cumprod(x) 벡터의 원소들의 누적곱

 

> # 절대값
> x = -1
> abs(x)
[1] 1
> vec = c(-1, 0, 1)
> abs(vec)
[1] 1 0 1
> 
> # 제곱근
> x = 9
> sqrt(x)
[1] 3
> vec = c(0, 1, 2)
> sqrt(vec)
[1] 0.000000 1.000000 1.414214
> 
> # 팩토리얼
> factorial(5)
[1] 120
> 1 * 2 * 3 * 4 * 5
[1] 120

 

> vec = sample(1:100, 3)
> vec 
[1] 20 56 40
> prod(vec)
[1] 44800
> 20 * 56 * 40
[1] 44800
> 
> # 누적합
> cumsum(vec)
[1]  20  76 116
> 
> # 누적곱
> cumprod(vec)
[1]    20  1120 44800

 

 

 

  • 반올림 함수
round(x, digits=0) 값의 반올림
ceiling(x) 값의 올림
floor(x) 값의 내림

 

> vec <- c(1.53455, 2.58762, -1.34329, 2.56)
> round(vec, digits=3)
[1]  1.535  2.588 -1.343  2.560
> mean(vec)
[1] 1.33472
> round(mean(vec)) 
[1] 1
> 
> # 올림
> ceiling(vec)
[1]  2  3 -1  3
> 
> # 버림
> floor(vec)
[1]  1  2 -2  2

digits 인수는 소수점을 몇자리까지 표시할 것인지 설정할 수 있다. 

음수 -3으로 설정할 경우 백의 자리에서 반올림되어 천단위로 값이 출력된다.

 

 

 

  • e, 로그, 삼각함수
exp(x) e승
log(x) 자연로그
log2(x) 이진로그
log10(x) 상용로그
sin(x) 사인 함수 
cos(x) 코사인 함수 
tan(x) 탄젠트 함수
also acos(x), cosh(x), acosh(x), etc  

 

> # e
> exp(1)
[1] 2.718282
> exp(1:3)
[1]  2.718282  7.389056 20.085537
> 
> # 로그
> log(1)
[1] 0
> log(c(10,100,1000))
[1] 2.302585 4.605170 6.907755
> 
> log2(2)
[1] 1
> log2(c(16,64,1024))
[1]  4  6 10
> 
> log10(10)
[1] 1
> log10(c(10,100,1000))
[1] 1 2 3
> 
> # 삼각함수
> sin(0)
[1] 0
> cos(0)
[1] 1
> tan(0)
[1] 0

 

 

 

  • 기타 함수
length(x) 원소 개수
unique(x) 중복 원소를 제외한 원소
match(x, y) 매치되는 값의 인덱스

 

> vec = sample(0:9, 10, replace=T)
> length(vec)
[1] 10
> cat(vec, '\n=>', unique(vec), '\n') 
8 1 7 8 1 1 8 2 0 0 
=> 8 1 7 2 0 

sample() 함수에 replace=TRUE 를 지정하면 중복된 값을 추출할 수 있도록 해준다.

 

> v1 = sample(1:9, 5)
> v2 = sample(1:9, 5)
> cat('', v1, '\n', v2, '\n')
 7 2 3 9 5 
 5 2 8 4 1 
> match(v1, v2)
[1] NA  2 NA NA  1

match() 함수는 처음 입력한 v1을 기준으로 v1의 원소가 v2에 있다면 v1의 원소 자리에  v2 원소의 인덱스를 반환한다. v1의 원소가 v2에 없다면 결측치 NA를 반환한다.

 

 

 

 

 

<R 벡터 Vector 관련 내장함수>

반응형

댓글