데이터 분석/R 데이터 처리 & 분석

R 데이터타입 소개

love R 2020. 1. 15. 14:23
반응형

R 데이터타입

데이터타입에 대해 숙지하는 것은 R을 본격적으로 시작하기 전에 기초 및 기본이 되는 내용입니다.

길게 말고 간단명료하게 알아보도록 하겠습니다.

R에는 다음과 같은 데이터타입이 존재합니다.

  1. 스칼라(Scala)

  2. 벡터(Vector)

  3. 데이터프레임(Dataframe)

  4. 리스트(List)

  5. 행렬(Matrix)

  6. 배열(Array)

1. 스칼라(Scala)

데이터 구성요소가 하나인 데이터타입

"c" # 문자
$ [1] "c"
1 # 숫자
$ [1] 1

2. 벡터(Vector)

스칼라가 모이면 벡터라고 부릅니다.
여러 개의 스칼라를 하나의 벡터로 만들기 위해서 c(스칼라, 스칼라, 스칼라, …) 라는 명령어를 사용합니다.

"c" # 문자
$ [1] "c"
1 # 숫자
$ [1] 1
# 이렇게 하나씩 있는게 스칼라인데, 여러 개의 스칼라를 하나의 벡터로 구성한다.

 

c(“c”,1) 이라는 명령어를 통해 하나의 벡터를 만들어 봅시다.

c("c",1)

참고로 맨 앞에 있는 c는 벡터를 만들어주는 명령어이고, 요소에 “c” 와 1 이 있다는 뜻입니다.

 

$ [1] "c" "1"

 

다른 예제도 확인해봅시다.

c('a','b','c','d')
$ [1] "a" "b" "c" "d"

이처럼 'a', 'b' , 'c', 'd' 문자로 구성된 벡터를 만들 수 있습니다.

 

 

3. 데이터프레임(Dataframe)

벡터가 모이면 데이터프레임이 됩니다.
data.frame(벡터,벡터,벡터, …) 라는 함수를 사용하며 각 벡터는 데이터프레임의 열이 됩니다.

A <- c(1,2,3)
B <- c(5,6,7)
C <- c(8,9,0)

 

위의 내용에서 화살표를 기준으로 보았을 때, 왼쪽에 있는 데이터변수 명에 오른쪽의 내용을 할당해달라는 뜻입니다(데이터변수 명은 임의로 지정가능).

  • 첫번째는 1,2,3 으로 구성된 벡터를 A 라는 변수에 할당
  • 두번째는 5,6,7 으로 구성된 벡터를 B 라는 변수에 할당
  • 세번째는 8,9,0 으로 구성된 벡터를 C 라는 변수에 할당

이때 데이터프레임을 만들어본다면,

result <- data.frame(A,B,C)
result
$   A B C
$ 1 1 5 8
$ 2 2 6 9
$ 3 3 7 0

data.frame() 함수를 이용하여 A,B,C 각 벡터를 데이터프레임으로 만들어주고 result 라는 데이터변수에 할당하였습니다.

4. 리스트(list)

데이터프레임은 하나의 데이터셋으로 구성할 수 있지만, 여러 개의 데이터셋이 있을경우 이를 list라는 장소에 담을 수 있습니다.

result2 <- data.frame(test1=c('a','c','f'), test2 = c('r','y','z'))
list(result,result2)
$ [[1]]
$   A B C
$ 1 1 5 8
$ 2 2 6 9
$ 3 3 7 0
$ 
$ [[2]]
$   test1 test2
$ 1     a     r
$ 2     c     y
$ 3     f     z

위와 같이 데이터프레임을 각각 넣을 수도 있고 list에서는 데이터타입의 제한을 받지 않습니다.
예를 들어, 숫자형 벡터와 문자형 벡터를 같이 넣을 수 있습니다.
서로 다른 데이터 타입을 한 곳에 몰아넣을 수 있는 것이 리스트의 가장 큰 특징입니다.

result2 <- data.frame(test1=c('a','c','f'), test2 = c('r','y','z'))
list(result,result2,'a',1)
$ [[1]]
$   A B C
$ 1 1 5 8
$ 2 2 6 9
$ 3 3 7 0
$ 
$ [[2]]
$   test1 test2
$ 1     a     r
$ 2     c     y
$ 3     f     z
$ 
$ [[3]]
$ [1] "a"
$ 
$ [[4]]
$ [1] 1

5. 행렬(Matrix)

행렬을 만드는 방법은 matrix(값,nrow 또는 ncol 지정) 입니다.

 

예를 들어,

matrix(1:10, ncol=5) 는 1부터 10의 값을 열이 5개인 행렬을 만드는 명령어이다.

matrix(1:10, nrow=2) 는 1부터 10의 값을 행이 2개인 행렬을 만드는 명렁어이다.

결국 위의 두 명령어는 같은 결과값이 나오는 것을 알 수 있습니다.

# 2 x 5 행렬을 만들어보자
matrix(1:10,ncol=5)
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]    1    3    5    7    9
$ [2,]    2    4    6    8   10

6. 배열(array)

배열은 i x j 형태의 matrix 를 차곡차곡 쌓는다는 느낌으로 이해하면 쉽습니다.
예를 들어 위에서 2 x 5 의 행렬을 만들었는데 이 행렬의 구조로 n개를 쌓는다는 느낌이다.
배열을 만드는 방법은 array(값, c(행수, 열수, 몇 개의 요소?))
복잡해보여도 다음 예제를 보면 쉽게 이해할 수 있을 것이다.

# 2 x 5 행렬을 10개 만들어보자
array(1:100,c(2,5,10))
$ , , 1
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]    1    3    5    7    9
$ [2,]    2    4    6    8   10
$ 
$ , , 2
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]   11   13   15   17   19
$ [2,]   12   14   16   18   20
$ 
$ , , 3
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]   21   23   25   27   29
$ [2,]   22   24   26   28   30
$ 
$ , , 4
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]   31   33   35   37   39
$ [2,]   32   34   36   38   40
$ 
$ , , 5
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]   41   43   45   47   49
$ [2,]   42   44   46   48   50
$ 
$ , , 6
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]   51   53   55   57   59
$ [2,]   52   54   56   58   60
$ 
$ , , 7
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]   61   63   65   67   69
$ [2,]   62   64   66   68   70
$ 
$ , , 8
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]   71   73   75   77   79
$ [2,]   72   74   76   78   80
$ 
$ , , 9
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]   81   83   85   87   89
$ [2,]   82   84   86   88   90
$ 
$ , , 10
$ 
$      [,1] [,2] [,3] [,4] [,5]
$ [1,]   91   93   95   97   99
$ [2,]   92   94   96   98  100

 

이상으로 포스팅 마치고 궁금한 점은 댓글로 남겨주세요!

 

반응형