01. R 설치 및 기본 구성
R이란? 제작된 통계 분석을 위한 언어
02. R 데이터 구조
- 데이터 형식 학습
- 기본 연산 학습
- 조건문 / 반복문 학습
- 활용 학습
- R이라고 하는 언어는 어떻게 이해하고 실행되는가?
프로그래밍 언어라고 하는 것은 현실에 있는 것들을 코드로 옮기는 것
R에는 다양한 형태의 데이터 구조 중 스칼라(하나의 값), 벡터(스칼라가 여러 개 모여있는 것), 행렬(Matrix, 스칼라가 2차원으로 이루어져 있는 것), 배열, 리스트, 데이터 프레임 등이 있다.
1️⃣ 벡터
- 타입이 같은 여러 데이터를 하나의 행으로 저장하는 1차원 데이터 구조
- 벡터 내에 들어갈 수 있는 하나의 값은 스칼라라고 한다.
- R에서 다루는 데이터 구조 중 가장 단순한 형태이며 명령어는 C(concentration)
- 등호 '='란 우측의 값을 좌측의 변수에 할당한다는 의미로 할당 연산자이다, '<-'를 사용할 수 있음.
- c 안에 ','를 구분자로 사용 가능하나 ':'을 사용해서 시작값과 끝값을 지정하여 한번에 벡터를 만들 수 있음.
- 벡터는 벡터와 결합하여 새로운 벡터를 형성할 수 있음.
- 벡터의 위치는 인덱스(index)된다.
- 이상값과 결측값
NaN (Not a Number) : 오류와 함께 숫자가 아님을 반환한다
NA (Not Availabel) : 공간을 차지하는 결측값
NULL : 공간을 차지하지 않는 존재하지 않는 값
2️⃣ 행렬
- 2차원 구조를 가진 벡터이며, 모든 데이터는 같은 타입이어야 한다.
- 다른 타입의 데이터가 들어가 있다면 자동으로 데이터 변환된다.
- ncol을 사용하여 열(column)의 수, nrow를 사용하여 행(row) 수를 정할 수 있음
> mx = matrix(c(1:6), ncol=2)
> mx
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
- matrix를 통해 행렬을 만드는 경우, 행렬의 값들이 열로서 저장된다. byrow를 T(TRUE)로 할 경우 값들이 열이 아닌 행에 저장된다.
- dim 함수를 사용하여 행의 개수와 열의 개수를 지정하여 벡터에 차원을 주어 행렬로 변환 가능
3️⃣ 배열
- 3차원 이상의 구조를 갖는 벡터
- 벡터의 성질과 동일하게 데이터는 모두 같은 타입이어야 함
- array를 이용하여 만들 수 있으며 dim을 통해 차원을 설정 가능
4️⃣ 리스트
- 여러 자료형의 원소들이 포함될 수 있는 자료 구조
- 리스트는 각각의 원소가 인덱스를 가진다.
- 리스트의 원소들은 이름을 가질 수 있다.
5️⃣ 데이터 프레임(data frame)
- 데이터 프레임은 행렬과 유사한 2차원의 목록 데이터 구조
- R에서 가장 많이 활용
- 행렬과는 다르게 각 열이 서로 다른 데이터 타입을 가진다.
> d1 = c(1:5)
> d2 = c('red','yellow','blue','purple','pink')
> df = data.frame(d1,d2)
> df
d1 d2
1 1 red
2 2 yellow
3 3 blue
4 4 purple
5 5 pink
03. R 기본 문법
1) 연산자
🔷 대입 연산자
- <-, <<-, = : 오른쪽 값을 왼쪽에 대입
🔷 비교 연산자
- == : 두 값이 같은지 비교
- ! = : 두 값이 다른지 비교
- <, > : 초과, 미만을 비교
- <=, => : 이상, 이하를 비교
- is.character : 문자형인지 아닌지 비교
- is.numeric : 숫자형인지 아닌지 비교
- is.logical : 논리형인지 아닌지 비교
- is.na : NA인지 아닌지 비교
- is.null : NULL인지 아닌지 비교
🔷 산술 연산자
+, -, *, / : 사칙연산
%/% : 나눗셈의 몫
%% : 나눗셈의 나머지
^, ** : 거듭 제곱
exp() : 자연상수의 거듭제곱
- 벡터도 덧셈이 가능하나, 벡터의 길이가 동일하지 않은 경우, 원소가 많은
쪽이 기준이 된다.
- 더 짧은 벡터가 반복되면서 덧셈이 진행된다.
🔷 기타 연산자
! : 부정연산자, 현재의 논리값에 반대되는 값
& : AND 연산자, 두 값이 모두 참일 때만 참
| : OR 연산자, 두 값 중 하나만 참이더라도 참
2) R 내장 함수
🔷 기본 함수
help() 또는 ? : 함수 도움말 확인
🔷 통계 함수
sum : 값의 합
mean : 값의 평균
median : 값의 중앙값
summary : 값의 요약값
3) R 데이터 핸들링
🔷 벡터형 변수
- 벡터 뒤에 대괄호를 붙여 숫자를 지정하면, 해당 숫자에 대항하는 원소를 불러온다.
- 대괄호 안에 -를 붙이고 숫자를 지정하면, 해당 원소를 제외하고 벡터를 불러온다.
🔷 데이터 이름 변경
colmanes와 rownames 함수로 행과 열의 이름을 확인하고 지정할 수 있음
🔷 데이터 추출/결합 응용
> v2 <- matrix(c(1:6),nrow=3)
> v2[3,2]
[1] 6
> colnames(v2) <- c('c1','c2')
> v2[,'c1']
[1] 1 2 3
> rownames(v2) <- c('r1','r2','r3')
> v2['r3','c2']
[1] 6
4) 제어문
- for 반복문
- for 반복 구문은 괄호 안의 조건 하에서 1값을 하나씩 증가시켜가며 중괄호 안의 구문을 반복실행 하도록 한다.
> e = c() #아무런 값도 포함되지 않는 벡터 선언
> for (i in 1:9) {
+ e[i] = i * i
+ }
> e
[1] 1 4 9 16 25 36 49 64 81
- while 반복문
- for 반복문과 동일하게 중괄호 안의 구문을 반복하도록 한다
- for 반복문과는 다르게 괄호 안의 조건이 만족되어 있는 동안 중괄호 안의 구문을 반복한다.
> f = 1
> while(f<5){
+ f=f+1
+ print(f)
+ }
[1] 2 # f에 2 입력
[1] 3 # f에 3 입력
[1] 4 # f에 4 입력
[1] 5 # f에 5 입력, {}가 False이므로 중단.
5) 조건문
- if ~ else 구문을 이용하여 if의 조건이 만족되지 않으면 else의 조건을 이용
6) 사용자 정의 함수
- 나만의 함수를 정의한다
- '함수 이름 = function (x, y, z)'의 형식으로 선언
- x, y, z는 함수의 인수(argument)
- package로 인터넷에 업로드할 수 있고, 유용한 패키지를 찾아서 사용 가능
7) 그외의 유용한 기능들
- substr
- cov (공분산)
- cor (상관계수)
- 날짜
- 자료형 데이터 구조 변환
- 그래픽 기능으로 산점도 그래프 가능