[R] R을 이용한 통계 분석 및 데이터 시각화 : 벡터

 정보

  • 업무명     : R을 이용한 통계 분석 및 데이터 시각화 : 벡터

  • 작성자     : 박진만

  • 작성일     : 2020-03-24

  • 설   명      :

  • 수정이력 :

 

 내용

[개요]

  • R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다. 

  • 통계 분석 기능으로 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.

  • 또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.

  • 특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.

  • 또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.

 

digital-marketing-1433427_1280 (1).jpg

 

[특징]

  • 데이터를 이해하기 위해서 통계 분석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

     

[기능]

  • 데이터형 소개

 

[활용 자료]

  • 없음

 

[자료 처리 방안 및 활용 분석 기법]

  • 없음

 

[사용법]

  • 소스 코드 예시 참조

 

[사용 OS]

  • Windows 10

 

[사용 언어]

  • R v3.6.2

  • R Studio v1.2.5033

 

 소스 코드

[벡터 생성]

  • 벡터의 생성은 c를 사용한다.

  • 여러 요소를 쉼표로 구분하여 c에 대입하면, 하나의 벡터가 생성된다. 

  • 또한 산술 급수 및 순환 수열 등 규칙성 있는 벡터를 생성하는 경우 seqrep등을 사용한다.

x <- c(23, 17, 67, 127)
x
## [1]  23  17  67 127

x <- rep(c(1, 2), length = 10)
x
##  [1] 1 2 1 2 1 2 1 2 1 2

x <- rep(c(1, 2), times = 10)
x
##  [1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2

x <- rep(c(1, 2, 3), times = 3)
x
## [1] 1 2 3 1 2 3 1 2 3

x <- rep(c(1, 2, 3), times = c(3, 3, 3))
x
## [1] 1 1 1 2 2 2 3 3 3

x <- seq(1, 10, by = 2)
x
## [1] 1 3 5 7 9

x <- seq(1, 10, length = 2)
x
## [1] 1 10

x <- sequence(10)
x
##  [1]  1  2  3  4  5  6  7  8  9 10

x <- sequence(c(1, 2, 3, 4))
x
##  [1] 1 1 2 1 2 3 1 2 3 4

 

[벡터 요소 추가]

  • 기존의 벡터에 새로운 요소를 추가하거나 또는 2 개의 벡터를 결합시키고 싶은 경우, c또는 append를 사용한다.

  • c는 주어진 여러 벡터를 주어진 순서로 결합한다. 

  • append는 기본적으로는 c같은 기능을 하지만, after등의 옵션을 쓰면 첫 번째 벡터의 n 번째 요소 뒤에 두 번째 벡터를 삽입하는 등 조금 더 유연성이 있다.

x <- c(1, 2, 3, 4, 5)
y <- c(-1, -2, -3, -4, -5)

w <- c(x, y)
w
## [1]  1  2  3  4  5 -1 -2 -3 -4 -5

w <- append(x, y)
w
## [1]  1  2  3  4  5 -1 -2 -3 -4 -5

w <- append(x, y, after = 2)
w
## [1]  1  2 -1 -2 -3 -4 -5  3  4  5

 

[벡터 요소 추출]

  • 벡터의 요소를 꺼낼 때에는 대괄호를 사용한다.

  • 대괄호 안에 요소의 인덱스를 삽입하는 방식으로 요소를 추출할 수 있다.

  •  이 때 대부분의 프로그래밍 언어에서의 인덱스는 0에서 시작하는 경우가 많지만,  R의 경우 1부터 인덱스가 시작된다.

x <- c(21, 43, 556, 23)
x[3]
## [1] 556

x[c(1, 3)]
## [1] 21 556

x[-3]
## [1] 21 43 23

x[c(-1, -3)]
## [1] 43 23

 

  • 예를 들어 5 미만의 요소만을 취득 할 수 있도록 특정한 조건을 지정하여 그 조건에 맞는 요소만 선택한다고 가정한다면, 그에 따른 조건을 지정하여 요소를 추출할 수 있다.

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

z <- (y < 5)
z
## [1] T T T T F F F F F F

y[z]
## [1] 1 2 3 4

y[y < 5]
## [1] 1 2 3 4

 

[벡터 정렬]

  • 벡터의 요소를 오름차순 또는 내림차순으로 정렬하는 경우 sort를 이용한다.

x <- c(1, 10, 20, 30, 40, 50, 60, 1, 30)

y <- sort(x)
y
## [1]  1  1 10 20 30 30 40 50 60

y <- sort(x, decreasing = TRUE)
y
## [1] 60 50 40 30 30 20 10  1  1

y <- sort(x, index.return = TRUE)
y$x
## [1]  1  1 10 20 30 30 40 50 60
y$ix
## [1] 1 8 2 3 4 9 5 6 7

 

  • 그리고 sort와 비슷한 기능을 가진 order함수가있다. 
  • sort의 경우 벡터의 요소를 정렬하고 그 결과를 돌려주는 반면, order는 벡터 요소의 결과가 아닌 인덱스 번호를 리턴해 준다.
x <- c(1, 10, 20, 30, 40, 50, 60, 1, 30)

y <- order(x)
y
## [1] 1 8 2 3 4 9 5 6 7

y <- x[order(x)]
y
## [1]  1  1 10 20 30 30 40 50 60

y <- x[order(x, decreasing = TRUE)]
y
## [1] 60 50 40 30 30 20 10  1  1

y <- x[rev(order(x))]
y
## [1] 60 50 40 30 30 20 10  1  1


x <- c(7, 3, 1, 9, 5) 
y <- order(x) 
z <- x[y] 
z
## [1] 1 3 5 7 9

w <- z[order(y)]
w
## [1] 7 3 1 9 5

 

[벡터 요소의 치환]

  • 벡터 값을 변경하려면 변경하려는 요소를 직접 지정하여 새 값을 대입하면 된다.

x <- c(10, 20, 30, 40, 50)
x[2] <- 0.2
x
## [1]   10  0.2  30  40  50

x[c(2, 4)] <- c(-20, -40)
x
## [1]  10 -20  30 -40  50

 

  • 또한 replace를 이용할 수도 있다. replace(x, y, z)처럼 사용할 수 있으며, x는 대체 대상 벡터, y는 대체 위치 z에 치환 후의 내용을 대입하면 된다.

x <- c(10, 20, 30, 40, 50)
y <- c(2, 4)
z <- c(-20, -40)

w <- replace(x, y, z)
w
## [1]  10 -20  30 -40  50

 

[벡터의 계산]

기호 예시 의미
+ a+b 벡터 a와 벡터 b의 합 (a1+b1, a2+b2, …, an+bn)
- a-b 벡터 a와 벡터 b의 차이 (a1-b1, a2-b2, …, an-bn)
* a*b 벡터 a와 벡터 b의 곱 (a1*b1, a2*b2, …, an*bn)
/ a/b 벡터 a와 벡터 b의 나누기 (a1/b1, a2/b2, …, an/bn)
%/% a%/%b 벡터 a와 벡터 b의 몫 (a1%/%b1, a2%/%b2, …, an%/%bn)
%% a%%b 벡터 a와 벡터 b의 나머지 (mod)(a1%%b1, a2%%b2, …, an%%bn)
^ a^b 벡터 a의 성분에 벡터 b의 성분 제곱 (a1b1, a2b2, …, anbn)

 

x <- c(0:5)
y <- c(5:0)
x + y
## [1] 5 5 5 5 5 5

 

  • 계산 대상이되는 두 벡터의 길이가 다른 경우, 짧은 벡터의 요소가 반복된다. 

  • 이곳은 실수의 원인이되는 경우가 많으므로 주의해야 한다.

x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
y <- c(1, 2, 3)
x * y
## [1]  1  4  9  4 10 18  7 16 27

x / y
## [1] 1.0 1.0 1.0 4.0 2.5 2.0 7.0 4.0 3.0

 

[벡터의 집합 연산]

  • 벡터에 대해 두 벡터의의 합집합 또는 차집합을 계산하는 등의 집합 연산을 할 수있다.

함수식 입력 식 의미
union union(x, y) 합집합
intersect intersect(x, y) 교집합
setdiff setdiff(x, y) 차집합 (첫 번째 벡터에서 두 번째 벡터를 뺌)
setequal setequal(x, y) 동일한 집합인지 비교
x <- c(1:7)
y <- c(4:9)

union(x, y)
## [1] 1 2 3 4 5 6 7 8 9

intersect(x, y)
## [1] 4 5 6 7

setdiff(x, y)
## [1] 1 2 3

setequal(x, y)
## [1] FALSE

 

[다음글]

 

[R] R을 이용한 통계 분석 및 데이터 시각화 : 행렬

정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 행렬 작성자 : 박진만 작성일 : 2020-03-24 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석..

shlee1990.tistory.com

 

[이전글]

 

[R] R을 이용한 통계 분석 및 데이터 시각화 : 데이터형

정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 데이터형 작성자 : 박진만 작성일 : 2020-03-23 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계..

shlee1990.tistory.com

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음