워라밸 중독자

[R] 2차원 데이터 구조 - 행렬(matrix)과 데이터프레임(dataframe) 본문

코딩, 딱 지금이 시작할때! (코딱지)

[R] 2차원 데이터 구조 - 행렬(matrix)과 데이터프레임(dataframe)

Ufungi 2023. 1. 6. 16:38

행렬과 데이터프레임의 차이


2차원, 단일형 데이터 구조. 모든 원소들의 자료형이 동일하다.

데이터프레임
2차원, 다중형 데이터 구조. 각 column 내에서 원소들의 자료형이 동일하다 (column끼리는 서로 자료형이 달라도 된다).

분석시 가장 많이 접하게 되는 데이터 구조.

 

행렬 (matrix)

matrix(): 행렬 생성

* 데이터 분석시 이 함수로 직접 행렬을 만들 일은 거의 없다.

 

> mat <- matrix(1:20, nrow=4)
> mat
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20

 

데이터프레임 (dataframe)

데이터프레임은 아래 예시처럼 실수형, 문자형, 논리형 등 다양한 자료형을 다 포함할 수 있다.

data.frame(): 데이터프레임 생성

> x1 <- c(1,2,3)
> x2 <- c("a","b","c")
> x3 <- c(T,F,F)
> df <- data.frame(x1,x2,x3)
> df
  x1 x2    x3
1  1  a  TRUE
2  2  b FALSE
3  3  c FALSE
> str(df)
'data.frame':	3 obs. of  3 variables:
 $ x1: num  1 2 3
 $ x2: chr  "a" "b" "c"
 $ x3: logi  TRUE FALSE FALSE
> class(df)
[1] "data.frame"

만약 각 column 내에서 원소들의 자료형이 더이상 동일하지 않다면 어떻게 될까?
이를 알아보기 위해 t() 함수를 이용해 행열을 전환해봤다.

> df <- t(df)
> df
   [,1]   [,2]    [,3]   
x1 "1"    "2"     "3"    
x2 "a"    "b"     "c"    
x3 "TRUE" "FALSE" "FALSE"
> str(df)
 chr [1:3, 1:3] "1" "a" "TRUE" "2" "b" "FALSE" "3" "c" "FALSE"
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:3] "x1" "x2" "x3"
  ..$ : NULL
> class(df)
[1] "matrix" "array"

실수형, 문자형, 논리형의 자료형이 모두 문자형으로 바뀌고, 데이터 구조도 행렬로 바뀌었다.