본문 바로가기
ADsP

[ADsP] 5. R

by Point-Nemo 2026. 1. 31.

1. R의 데이터 타입

(1) 문자형 타입 

- 따옴표 혹은 쌍따옴표로 표시하며, 숫자/문자/논리형 모두 따옴표나 쌍따옴표로 묶을 시 문자형이 됨 

 

(2) 숫자형 타입

- numeric(숫자형), double(실수), integer(정수), complex(복소수) 등이 있음

 

(3) 논리형 타입 (logical)

- 참 혹은 거짓 

 

(4) NaN, NA, NULL

- Not a number = 숫자가 아님

- Not Available = 결측값 (NA는 공간을 차지하는 결측, NULL은 공간을 차지하지 않는 존재하지 않는 값)

 

2. R 기본 문법

(1) 대입 연산자

- 오른쪽 값을 왼쪽에 대입 (<-, <<-, =)

- 왼쪽 값을 오른쪽에 대입 (->, ->>)

 

(2) 비교 연산자

- NA는 비교할 값이 존재하지 않으므로 어떤 것과 비교해도 NA를 반환

- ==, <=, is.character 등

 

(3) 산술 연산자

- 두 숫자형 타입의 계산을 위한 연산자 

- (+, -, *, /)

- %/% (몫), %% (나머지)

- ** (제곱)

 

(4) 기타 연산자

- 부정연산자: !

- AND 연산자: &

- OR 연산자: | 

 

3. R 데이터 구조

(1) 벡터

- 벡터는 타입이 같은 여러 데이터를 하나의 행으로 저장하는 1차원 데이터 구조

- c를 써서 데이터를 묶을 수 있음

- v4 <- c( 3, TRUE, FALSE)를 출력하면 ([1] 3 1 0 )이 출력됨

 

(2) 행렬

- 2차원 구조를 가진 벡터로, 행렬에 저장된 모든 데이터는 같은 타입이어야함. 그렇지 못할 경우 자동으로 타입 변환

- matrix( c(1:6), nrow = 2) -> 1부터 6까지의 벡터를 행이 2개인 행렬로 만든다

- 기본적으로 열부터 1,2,3 순으로 채우지만, byrow = T 옵션을 지정하면 행부터 값이 채워진다

- 벡터가 저장되어있는 v1이라는 변수에 div(v1) <- c( 2, 3)과 같이 행/열을 지정해주게 되면 벡터로 출력가능하다

 

(3) 배열

- 3차원 이상의 구조를 갖는 벡터를 배열이라고 함

- array를 사용하여 배열을 만들 수 있으나 몇 차원의 구조를 갖는지 dim 옵션에 명시해야 한다. (안 그러면 1차원 생성)

- a1 <- array( c( 1: 12) , dim = c (2 , 3,  2) )

- dim 함수로도 가능하다

 

(4) 리스트

- 데이터 타입, 데이터 구조에 상관없이 사용자가 원하는 모든 것을 저장할 수 있는 자료구조 (성분간 이질적)

- L <- list() 지정 뒤, L[[1]] <- ?, L[[2]] <- ?, L[[3]] <-? 식으로 원하는 것을 저장 가능

 

(5) 데이터프레임

- 데이터 분석을 위한 2차원 구조를 갖는 관계형 데이터 구조

- 행렬과 같은 모양을 갖지만, 여러 개의 벡터로 구성되어 있어 각 열은 서로 다른 타입의 데이터를 가질 수 있음

- v1, v2에 서로 다른 타입의 벡터가 있다 가정할 때, df1 <- data.frame (v1, v2)로 데이터프레임 생성 가능

 

4. R 내장함수

(1) 기본 함수

help() 또는 ? - 함수들의 도움말 보기
paste() - 문자열 이어붙이기
seq() - 시작값, 끝값, 간격으로 수열 생성
- seq( 1, 10, by=2) -> 1 3 5 7 9 
rep() - 주어진 데이터를 일정 횟수만큼 반복
- rep(1, 5) -> 1 1 1 1 1
rm() - 대입 연산자에 의해 생성된 변수 삭제
ls() - 현재 생성된 변수들의 리스트를 보여줌
print() - 값을 콘솔창에 출력

 

(2) 통계 함수

- range: 입력된 값의 최대값과 최소값을 출력 

 

5. R 데이터 핸들링

(1) 데이터 이름 변경

- 행렬, 배열, 데이터프레임 등2차원 이상의 구조는 colnames와 rownames함수로 행/열 이름을 알 수 있으며 이름 지정이 가능함

 

(2) 데이터 추출

- 인덱싱 기호 [, ]를 사용해 원하는 위치의 데이터를 얻음

- 행/열의 이름으로도 데이터 추출 가능 

- m1[ , 'c1']

- 데이터 프레임에서는 $ 기호를 사용해 원하는 열의 데이터 추출 가능 (df1&v1) 

 

(3) 데이터 결합

  v1 <- c(1:3), v2<- c(4;6) 가정
rbind (행 결합) rbind(v1,v2) -> 1,2,3 (1행) 4,5,6 (2행)
cbind (열 결합) cbind(v1,v2) -> 1,2,3 (1열) 4,5,6 (2열)

- 벡터와 벡터의 결합에서는 부족한 데이터를 앞에서부터 다시 재사용해 활용하며 오류와 함께 결과 반환

 

6. 제어문

(1) 반복문

- for 반복문

- while 반복문

 

(2) 조건문

(3) 사용자 정의 함수

(4) 주석

- # 으로 표시

 

7. 통계 분석에 자주 사용되는 R 함수

(1) 숫자 연산

- round: 반올림

- ceiling: 올림

- floor: 내림

 

(2) 문자 연산

- tolower: 문자열을 소문자로 바꿈

- toupper: 문자열을 대문자로바꿈

- nchar: 문자열의 길이를 구함

- substr: 문자열의 일부분을 추출

- strsplit: 문자열을 구분자로 나누어 쪼갬

- grepl: 문자열에 주어진 문자가 있는지 확인

- gsub: 문자열의 일부분을 다른 문자로 대체

 

(3) 벡터 연산

- paste: 주어진 벡터를 구분자를 기준으로 결합

- table: 데이터의 개수를 구함

- order: 벡터의 순서를 구함

 

(4) 행렬 연산

- t: 전치행렬을 구함

- diag: 대각행렬을 구함

- %*%: 두 행렬을 곱합

 

(5) 데이터 탐색

 

(6) 데이터 전처리

- subset: 데이터에서 조건식에 맞는 데이터를 추출

- merge: 데이터를 특정 열을 기준으로 병합

- apply: 데이터에 열(또는 행)별로 주어진 함수를적용 (df1, 1, sum -> 행에 sum 함수 적용) 

 

(7) 정규분포

- dnorm: 주어진 값에서 함수값 구함

- rnorm: 정규분포에서 주어진 개수만큼 표본을 추출

- pnorm: 주어진 값보다 작을 확률값 구함

- qnorm: 주어진 넓이 값을 갖는 x값 구함

 

(8) 표본추출

- runif: 균일 분포에서 주어진 개수만큼 표본 추출

- sample: 주어진 데이터에서 주어진 개수만큼 표본 추출

 

(9) 날짜

- Sys.Date: 연/월/일 출력

- Sys.time: 연/월/일/시간 출력

 

(10) 산점도

- plot: 주어진 데이터의 산점도를 그림

- abline: 산점도에 추가 직선을 그림

 

(11) 파일 읽기 쓰기

- write.csv: 주어진 데이터를 csv로 저장

- saveRDS: R파일을 저장

 

(12) 기타

- install.packages: 패키지 설치

- library: 설치된 패키지 호출

 

'ADsP' 카테고리의 다른 글

[ADsP] 7. 통계의 이해  (0) 2026.02.02
[ADsP] 6. 데이터 마트 & 데이터 탐색  (1) 2026.02.01
[ADsP] 4. 분석 마스터플랜(2)  (1) 2026.01.31
[ADsP] 4. 분석 마스터플랜(1)  (0) 2026.01.31