반응형
- 최대최소 함수
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 관련 내장함수>
반응형
'R > Data Operation' 카테고리의 다른 글
R table 계열 함수 - 집계함수 (0) | 2020.11.26 |
---|---|
R apply 계열 함수/replicate/sweep/aggregate (0) | 2020.11.16 |
R 산술/관계/비교/논리연산자와 벡터연산 (0) | 2020.11.05 |
R 함수 Function - 함수정의/함수인자/재귀중첩함수 (0) | 2020.11.03 |
R 반복문 - for/while/repeat/break와 next (0) | 2020.11.03 |
댓글