728x90

R 에서 다루는 데이터 객체 중에 가장 많이 사용되는 것이 벡터입니다.

벡터란 단어가 익숙하지 않겠지만, 그냥 숫자열이나 문자열이라고 간단하게 생각하면 됩니다.

벡터다루기에서는 벡터를 만들고, 속성살펴보기, 벡터를 결합하기, 벡터의 요소에 접근하기,

벡터의 연산, 통계분석하기 순서대로 설명합니다.

 

1. 벡터 만들기

벡터를 만드는 명령어로는 seq  rep 가 있습니다.

 

(1) c 함수를 이용하기

 

벡터를 만드는 가장 기본적인 방법은 c( ) 함수를 이용하는 것인데 Concatenate 또는 Combine 의 약어입니다.

연속적인 원소로 구성된 벡터를 만들고자 할 때에는 : 연산자를 이용하면 편리하게 만들 수 있습니다.

 

원소가 숫자형인 경우

 

> c(1,2,3,4,5,6,7,8,9,10)                 # 1부터 10까지 벡터를 만든다

[1] 1 2 3 4 5 6 7 8 9 10

> vec01 <- c(1,2,3,4,5,6,7,8,9,10)    # 벡터이름( vec01)을 지정합니다.

> vec01 # 벡터 vec01을 프린트합니다.

[1] 1 2 3 4 5 6 7 8 9 10

 

다음과 같이 세미콜론을 이용하여 한 줄에 사용할 수 있습니다.

 

> vec01 <- c(1,2,3,4,5,6,7,8,9,10); vec01

[1] 1 2 3 4 5 6 7 8 9 10

 

> 1:10                          # 1 부터 10까지 원소로 구성된 벡터만들기

> c(-3,-2,-1,0,1,2,3,4,5)     # -3에서 5까지 음수를 지정할 수 있습니다.

> 5:-3                          # 5에서 -3까지

> c(1:5,7:10)                  # 1에서 5, 7에서 10까지

 

> vec01 <- c(1,2,3,4,5)

> vec02 <- c(6,7,8)

> vec03 <- c(vec01,vec02)  # 두개의 벡터 연결하기

 

원소가 문자형인 경우

문자형을 만드는 경우에는 따옴표(‘) 또는 겹따옴표(“)를 이용합니다.

 

> c('one','two','three') # 문자형 벡터만들기

[1] "one" "two" "three“

> c("'one","two","three") # 문자형 벡터만들기

[1] "'one" "two" "three"

> c('one','two','th ree') # 문자형 벡터만들기

[1] "one" "two" "th ree“

 

숫자와 문자를 합계 사용하면 문자형 벡터가 됩니다. 강제형변환이 됩니다.

> c(1,2,3,'one','two','three')

[1] "1" "2" "3" "one" "two" "three“

 

as.character 함수를 이용하여 숫자를 문자로 바꿀 수 있습니다.

> vec01 <- c(1,2,3,4,5)

> vec03 <- as.character(vec01)

 

 (2) Sequence 연산자(:)를 이용하기

 

연속적으로 벡터를 만드는 방법으로 seq 함수를 이용할 수 있습니다.

시작 숫자와 마지막 숫자를 지정하고, by 문을 이용하여 증분치를 지정할 수 있습니다.

 

> seq(1:10) # 1에서 10까지 벡터를 만들기

[1] 1 2 3 4 5 6 7 8 9 10

 

> seq(10) # 1에서 10까지 벡터를 만들기

[1] 1 2 3 4 5 6 7 8 9 10

 

> seq(from=1,to=6) # seq 함수를 이용하기(1부터 6까지 )

[1] 1 2 3 4 5 6

> seq(from=1,to=6,by=1) # 1부터 6까지

[1] 1 2 3 4 5 6

> seq(3,-3,by=-1) # 3부터 -3 까지

[1] 3 2 1 0 -1 2 -3

> seq(1,2,by=0.3) # 1.0 부터 2 까지 0.3 씩 증가시킨다

[1] 1.0 1.3 1.6 1.9

> seq(1,10,length=4) # 1부터 10까지 4개의 원소, 1,4,7,10 (10-1)/3 간격

[1] 1 4 7 10

> seq(1,9,length=5) # 1 5.5 10.14.5 19 (19-1)/4 4.5 간격으로 5

[1] 1.0 5.5 10.0 14.5 19.0 # length를 지정하여 벡터의 개수를 지정

> seq(0.5,4.6)

[1] 0.5 1.5 2.5 3.5 4.5

 

(3) rep 함수를 이용하기

 

동일한 값이나 패튼을 중복하고자 할 때에는 rep( ) 함수를 이용합니다.

 

> rep(3,6) # 3,3,3,3,3,3 36번 반복하여 만들기

> rep(c(1,2),6) # 1,2 1,2 ... 1,2 1,26번 반복하여 12개 원소 만들기

> rep(3,times=6) # 3,3,3,3,3,3 36번 반복하여 만들기

> rep(c(1,2),times=6) # 1,2 1,2 ... 1,2 1,26번 반복하여 12개 원소 만들기

 

참고: rnorm(10) # 정규분포를 따르는 난수 만들기

 

2. 벡터의 속성을 살펴보기

R에서 데이터를 다룰 때 데이터의 속성을 먼저 파악하는 습관을 가지는 것이 좋습니다.

이와 관련 함수로는 class, mode, str, length, dim, head, tail 등이 있습니다.

 

(1) 숫자형인 경우

 

> vec01 <- c(1:10)      # 벡터 vec01 을 만들기

> class(vec01)           # 벡터 vec01 의 클래스 알아보기...   "numeric"

> mode(vec01)          # 백터 vec01 의 모드를 알아보기...  "numeric"

> length(vec01)         # 벡터 vec01 의 원소 개수를 알아보기

       [1] 10

> head(vec01)           # 벡터 vec01 의 앞 6개 요소를 출력

       [1] 1 2 3 4 5 6

> str(vec01)              # 벡터의 구조를 출력

      num [1:10] 1 2 3 4 5 6 7 8 9 10

> dim(vec01)          # 벡터인 경우에는 NULL

> is.vector(vec01)      # TRUE

 

(2) 문자형인 경우

 

> vec2 <- c('one','two','three') # 문자로 구성된 벡터만들기

> length(vec2)  

      [1] 3

> class(vec2)           # "character"

> mode(vec2)          # "character“

> head(vec2) # 6개 요소를 출력(3개뿐))

      [1] "one" "two" "three"

> str(vec2) # 벡터의 구조를 출력

     chr [1:10] "one" "two" "three"

+ Recent posts