2014년 5월 27일 화요일

[Using R] R Cook Book #2 Sample - seq(), rep()

기본적으로 생성함수인 c() 함수를 활용하나 일일이 값을 넣어 주는 경우는 극히 드물것이라 생각이 든다. 아래의 수열생성하기에 활용되는 seq(), rep() 함수를 활용한 예제를 볼 수 있다.

# 0 부터 20 까지 값 2씩 증가 하여 생성
> seq(from=0, to=20, by=2)
 [1]  0  2  4  6  8 10 12 14 16 18 20

# 0 부터 20 까지 5개의 변수를 생성
> seq(from=0, to=20, length.out=5)
[1]  0  5 10 15 20

# 0 부터 100 까지 5개의 변수를 생성
> seq(from=0, to=100, length.out=5)
[1]   0  25  50  75 100

# 0 부터 20 까지 5개의 변수를 생성 (단, 소수점 추가)
> seq(from=1.0, to=100.0, length.out=5)
[1]   1.00  25.75  50.50  75.25 100.00

# rep() 반복을 의미 함 PI값을 5번 반복 생성
> rep(pi, times=5)
[1] 3.141593 3.141593 3.141593 3.141593 3.141593

#예제 활용 값 생성
> fib <- c(0, 1, 1, 2, 3, 4, 5, 8, 13, 21, 34)
> fib
 [1]  0  1  1  2  3  4  5  8 13 21 34

# 백터값 원소를 접근하는 방식 첫번째에서 부터 세번째 값 까지 접근
> fib[1:3]
[1] 0 1 1

# 백터값 원소를 접근하는 방식 첫번째, 세번째, 다섯번째 값 접근
> fib[c(1,3,5)]
[1] 0 1 3

# 백터값 원소 중 첫번째를 제외한 모든 값
> fib[-1]
 [1]  1  1  2  3  4  5  8 13 21 34

#중앙값 보다 큰 모든 원소를 선택
> fib[ fib > median(fib)]
[1]  5  8 13 21 34

# 상하위 5%안에 있는 모든 원소를 선택
> fib[ (fib < quantile(fib, 0.05)) | (fib > quantile(fib, 0.95)) ]
[1]  0 34

# 평균에서 +_ 표준편자를 넘는 모든 원소를 선택
> fib[ abs(fib-mean(fib)) > 2*sd(fib)]
[1] 34

#NA나 NULL이 아닌 모든 원소 선택
> fib[ !is.na(fib) & !is.null(fib)]
 [1]  0  1  1  2  3  4  5  8 13 21 34

# 백터값 생성 후 개별적으로 이름을 줄수도 있다.
> year <- c(1979, 1980, 2011, 2012)
> names(year) <- c("John", "Umsh", "JunSeok", "BeomSeok")
> year
    John     Umsh  JunSeok BeomSeok
    1979     1980     2011     2012

#이름을 통한 원소 접근이 가능 하다.
> year["John"]
John
1979


# Sample Source - NA value
> x <- c(0, 1, 1, 2, 3, NA)

> mean(x, na.rm=TRUE)
[1] 1.4

> sd(x, na.rm=TRUE)
[1] 1.140175

** Reference Book
** R Cookbook - ISBN 9780596809157

댓글 없음:

댓글 쓰기

언제 부터 였던가 생각해보니 아르바이트 겸 외부 컨설팅을 의뢰 받고 맥북 프로를 처음 써봤을 때 부터 였던 것 같다. 지금은 거의 대부분의 작업을 맥으로 작업을 하다 보니 윈도우에서만 실행되는 일부 프로그램들 때문과 회사 내부 ERP프로그램이 윈도우 ...