정보
-
업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 벡터
-
작성자 : 박진만
-
작성일 : 2020-03-24
-
설 명 :
-
수정이력 :
내용
[개요]
-
R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다.
-
통계 분석 기능으로 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.
-
또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.
-
특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.
-
또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.
[특징]
-
데이터를 이해하기 위해서 통계 분석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어
[기능]
-
데이터형 소개
[활용 자료]
-
없음
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
소스 코드 예시 참조
[사용 OS]
-
Windows 10
[사용 언어]
-
R v3.6.2
-
R Studio v1.2.5033
소스 코드
[벡터 생성]
-
벡터의 생성은 c를 사용한다.
-
여러 요소를 쉼표로 구분하여 c에 대입하면, 하나의 벡터가 생성된다.
-
또한 산술 급수 및 순환 수열 등 규칙성 있는 벡터를 생성하는 경우 seq, rep등을 사용한다.
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
[다음글]
[이전글]
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'프로그래밍 언어 > R' 카테고리의 다른 글
[R] R을 이용한 통계 분석 및 데이터 시각화 : 데이터 프레임 (0) | 2020.03.25 |
---|---|
[R] R을 이용한 통계 분석 및 데이터 시각화 : 행렬 (0) | 2020.03.24 |
[R] R을 이용한 통계 분석 및 데이터 시각화 : 데이터형 (0) | 2020.03.23 |
[R] R를 이용한 고급 기상 통계학 실습 : R 기초, 자료의 특성, 자료의 상관성, 통계적 유의수준, 조화 분석, 주성분 분석, 기계 학습 (0) | 2020.03.17 |
[R] ECMWF Interim 수치 예측 모델로부터 지오포텐셜 고도 (Geopotential Height)를 이용한 주성분 분석 및 가시화 (0) | 2020.03.16 |
최근댓글