본문 바로가기

R프로그래밍

[R프로그래밍] 데이터 구조(벡터, 행렬, 리스트, 데이터 프레임)

데이터 값 하나하나는 정수형, 실수형, 문자형, 논리값 등의 타입(type)을 갖는다.

그리고 한개의 값만 가지는 변수의 데이터 구조를 스칼라(scala)라고 한다.

 

하지만 데이터 값이 하나인 변수만 있다면 데이터 분석을 할 필요가 없다.

즉, 데이터는 늘 여러개의 값이 모여 구조를 이루는데 R에서는 데이터의 구조가 대표적으로 4가지 있다.

 

 

 

< 벡터 >

벡터(vector)는 모든 원소가 같은 데이터 타입을 갖는 1차원 데이터 구조이다.

원칙상 변수는 한개의 스칼라 값만 가질 수 있는데, 스칼라를 제외한 나머지 데이터 구조처럼 여러개의 값을 입력할 때는 연결함수(combine) c( ) 를 사용해 묶어준다.

 

# vector
x <- c(1,2,3)
x

 

 

연속된 값을 만들고 싶을 때는 콜론(:) 연산자를 이용할 수 있다.

콜론 연산은 +, -, *, /와 같은 산술연산보다 우선순위이다. 

수학에서 더하기 빼기보다 곱하기 나누기를 우선 계산하는 것과 같은 원리이다.

 

# 콜론연산(:)
x <- c(1:50)
x

1:3+4
1:(3+4)

 

 

 

 

 

< 행렬 >

행렬은 모든 원소가 같은 데이터 타입을 갖는 2차원 데이터 구조이다.

벡터의 2차원 형태이다.  2차원이므로 행(row)과 열(column)을 가지며, matrix( ) 를 이용해 생성한다.

열의 개수(cnol)나 행의 개수(nrow)를 지정해주어야 한다.

 

# matrix
x <- matrix(1:12, ncol=3)
x

y <- matrix(1:12, nrow=3)
y

 

 

 

 

< 리스트 >

리스트는 1차원 구조인데, 벡터와 다른 점은 두 종류 이상의 데이터 타입을 포함한다.

list ( ) 를 이용해 생성한다.  예시 코드에서 확인할 수 있듯이 서로 다른 벡터를 합쳐놓은 개념이다.

 

# list
x <- list("A", 1)
x

y <- list("A", "B", 2)
y

a <- list(c("A", "B", "c"), c(1,2,3))
a

b <- c("E", "F")
c <- list(b, c(1:3))
c

 

 

 

 

 

< 데이터 프레임 >

데이터 프레임은 리스트의 2차원 형태이다.

리스트의 속성을 그대로 가지고 있으므로, 하나의 행은 모두 다른 데이터 타입을 가질 수 있으나,  하나의 열은 모두 동일한 데이터 타입을 갖는다. 

data.frame( ) 을 이용해 생성하며 열의 이름을 지정해줄 수 있다.

 

# data frame
x <- data.frame(name = c("Minsoo", "Mina", "Jessy"), number = c(100, 101, 102))
x

y <- list(name = c("Minsoo", "Mina", "Jessy"), number = c(100, 101, 102))
y

 

 

 

 

 

R이 가지고 있는 데이터 구조(벡터, 행렬, 리스트, 데이터프레임)를 모두 소개했다.

그 중에서 데이터 프레임은 가장 분석에 많이 사용되는 구조이다.