본문 바로가기

■ 프로그래밍/R

[R 기초] 데이터 유형 - Array, Data.Frame, List

[ R 데이터 유형 : Array, Data.Frame, List ]


# 주석

## 결과값


Data Type

  1. Vector ***
  2. Factor *
  3. Matrix
    4. Array
  4. Data Frame ***
  5. List *
    (* 중요도)


4. Array

[특징]
- 3차원 이상의 다차원 구조
- 하나의 데이터 유형만 가짐
- Vector/Matrix의 확장

4.1 Array 만들기

array(vector, dim = )
- dim에 차원의 수, 1을 넣으면 array/vector, 2는 array/matrix

array(1:5, dim = 10)          # 1차원 array/vector
array(1:5, dim = c(3,3))      # 2차원 array/matrix
array(1:5, dim = c(3, 3, 3))  # 3차원 array


Data Type

  1. Vector ***
  2. Factor *
  3. Matrix
  4. Array
    5. Data Frame ***
  5. List *
    (* 중요도)


5. Data.Frame

[특징]
- 행과 열로 구성
- 2차원 구조
- 여러 개의 데이터 유형을 가질 수 있음
- 단, 하나의 열에는 하나의 데이터 유형만 가짐
- R에서 데이터는 기본적으로 Data.Frame 지칭

5.1 Data.Frame 만들기

data.frame(vector, factor, matrix)

id <- 1:6
gender <- c("M", "F", "M", "M", "M", "M")
age <- c(25, 23, 24, 28, 25, 35)
major <- c("컴퓨터공학", "호텔경영", "경제학", "컴퓨터공학", "IT응용공학", "경제학")
survey <- data.frame(id, gender, age, major)
survey
##   id gender age      major
## 1  1      M  25 컴퓨터공학
## 2  2      F  23   호텔경영
## 3  3      M  24     경제학
## 4  4      M  28 컴퓨터공학
## 5  5      M  25 IT응용공학
## 6  6      M  35     경제학
A <- cbind(id, gender, age, major) # 전부다 character로 바뀜, matrix는 하나의 유형만 가능
A
##      id  gender age  major       
## [1,] "1" "M"    "25" "컴퓨터공학"
## [2,] "2" "F"    "23" "호텔경영"  
## [3,] "3" "M"    "24" "경제학"    
## [4,] "4" "M"    "28" "컴퓨터공학"
## [5,] "5" "M"    "25" "IT응용공학"
## [6,] "6" "M"    "35" "경제학"


Data Type

  1. Vector ***
  2. Factor *
  3. Matrix
  4. Array
  5. Data Frame ***
    6. List
    (
    중요도)


6. List

[특징]
- 가장 유연한 형태의 데이터
- 데이터 분석 결과 중의 일부를 저장할 때 사용

6.1 List 만들기

list(vector, factor, matrix, array, data.frame, list)

result <- list(major, A, survey) #chararcter vector, matrix, data.frame
result 
## [[1]]
## [1] "컴퓨터공학" "호텔경영"   "경제학"     "컴퓨터공학" "IT응용공학"
## [6] "경제학"    
## 
## [[2]]
##      id  gender age  major       
## [1,] "1" "M"    "25" "컴퓨터공학"
## [2,] "2" "F"    "23" "호텔경영"  
## [3,] "3" "M"    "24" "경제학"    
## [4,] "4" "M"    "28" "컴퓨터공학"
## [5,] "5" "M"    "25" "IT응용공학"
## [6,] "6" "M"    "35" "경제학"    
## 
## [[3]]
##   id gender age      major
## 1  1      M  25 컴퓨터공학
## 2  2      F  23   호텔경영
## 3  3      M  24     경제학
## 4  4      M  28 컴퓨터공학
## 5  5      M  25 IT응용공학
## 6  6      M  35     경제학


6.2 List의 Slicing

  1. list[index]
  2. list[[index]]
result[1]    # list
## [[1]]
## [1] "컴퓨터공학" "호텔경영"   "경제학"     "컴퓨터공학" "IT응용공학"
## [6] "경제학"
result[[1]]  # vector
## [1] "컴퓨터공학" "호텔경영"   "경제학"     "컴퓨터공학" "IT응용공학"
## [6] "경제학"
result[[1]][3]
## [1] "경제학"

list의 slicing은 약간 특이하다.
list[1]의 경우 큰 묶음으로 같이 보여지며, list[[1]]의 경우 큰 묶음 안의 내용만을 보여준다.
list[[1]]은 vector형식이기에 vector의 slicing이 가능하다.


아래의 코딩을 직접 따라하면서 감을 잡아보는 것을 추천한다.

result[2]         # list
result[[2]]       # matrix
result[[2]][ , 2] # 행렬의 뒤에 [ , ]
result[3]    # list
result[[3]]  # data.frame