More on Vectors and Indexing
공지
본 Tutorial은 강사에게 강의를 듣는 과거-현재-미래 학생들을 위해 작성하였습니다.
이 글을 읽어주시는 분들에게 작은 도움이 되기를 바랍니다.
I. 벡터
본 포스트는 프로그래밍과 R을 처음 배우는 사람을 위해 작성하였습니다. 짧게 읽어두시기를 바랍니다. 공부하실 때는 복잡하게 생각하지는 마시기를 바랍니다. 영어의 기본단어 및 문법을 배우듯이 그냥 받아들이시기를 바랍니다.
현재 진행중인 R 기초문법은 아래와 같습니다. 원하시는 것은 참조해서 가볍게 공부하시기를 바랍니다.
벡터(Vector
). R에서 다루는 가장 작은 단위값의 데이터다. 1차원으로 구성이 되어 있다.
(1) 다양한 방식의 벡터 생성
벡터는 같은 종류의 값으로 구성되어야 함을 배웠다. 그런데, 벡터 생성은 다양한 방식으로 구성될 수 있다.
데이터분석을 할 때 자주 쓰는 건 아니다. 보통은 주로 데이터 전처리와 시각화, 그리고 각종 통계 분석을 해석 하면서 시간을 보낸다.그런데, 가끔 필요할 때가 있다.
간단하게 데이터를 만들어 시뮬레이션을 진행할 때다. 이럴 때 기초문법을 알고 있으면 데이터가 없어도 매우 쉽게 데이터를 만들수가 있다.
코드로 넘어가보자.
xSeq <- 1:10
print(xSeq)
## [1] 1 2 3 4 5 6 7 8 9 10
원래대로라면, xSeq <- c(1,2,3...,10)
이런 형태로 코드가 작성되어야 하지만, 매우 간단하게 작성된 것을 볼 수 있다. 이 문법에 기초해서 10을 살짝 변형해보자.
xMul <- 1:5*4
xPar <- 1:(5*4)
message(cat("The result of x1:5*4: ", xMul))
## The result of x1:5*4: 4 8 12 16 20
message(cat("The result of xPar: ", xPar))
## The result of xPar: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
이렇게 ()
을 추가해서 숫자형 벡터를 원하는 길이만큼 늘려서 생성할 수 있다.
이러한 문법을 영어로는 sequence
라고 부른다. 그런데, sequence
문법을 통해서 인덱싱도 할 수 있다.
(2) Indexing with Sequence
먼저 코드부터 확인해보자.
myStart <- 3
xPar[myStart:(myStart+7)]
## [1] 3 4 5 6 7 8 9 10
1:20
을 담고있는 xPar
벡터에, [myStart:(myStart+7)]
범위를 지정해서, 그 범위에 해당하는 값만 반환하도록 하는 문법이다.
이 부분은 꼭 한번 실습 하는 것을 권한다.
(3) seq() & req()
지금까지 배운 것은 sequence
벡터 생성에 관한 것을 배웠다. 그런데, 만약 규칙을 통해서 생성하고 싶다면 어떻게 할까? 사용자 정의 함수를 만들수도 있지만, R에서는 웬만한 건 다 함수로 제공한다.
함수는 일종의 단어와 같다. 단어의 개수를 얼마만큼 많이 아느냐에 따라 외국어 실력이 나오듯이, 기초 함수 사용법은 많이 외우면 외울수록 좋다.
코드를 보자.
xSeq <- seq(from = -5, to = 28, by = 3)
message(cat("The result of xSeq: ", xSeq))
## The result of xSeq: -5 -2 1 4 7 10 13 16 19 22 25 28
문법이 어렵지는 않을 것이다. 시작점과 끝점이 있고, 단위를 3번 건너뛰어서 출력하도록 하는 것이다.
이번에는 rep()
함수를 사용해보자. rep
는 replicate(복제하다)
는 뜻을 가지고 있는데, 특정 숫자열이 반복해서 나타나도록 한다. 코드를 보면 쉽게 이해가 갈 것이다.
xRep <- rep(c(1,2,3), each = 3)
message(cat("The result of xRep: ", xRep))
## The result of xRep: 1 1 1 2 2 2 3 3 3
만약에 각 함수에 대해 조금 구체적으로 알고 싶다면, 다음과 같이 입력하고 실행해본다.
help(rep) # 방법 1
?rep # 방법 2
지금까지 벡터의 기본에 대해 배웠다. 다음시간에는 벡터내에 존재하는 결측치 = NA
처리 방법에 대해 학습하도록 한다.
2. Reference
Chapman, C., & Feit, E. M. D. (2015). R for marketing research and analytics. Cham: Springer.