R/R

[R] 01. R의 자료구조

구름솜:D 2023. 11. 22. 17:07
728x90

데이터 유형

1) 숫자형(numeric): 숫자로만 이루어진 데이터타입

2) 문자형(character): 문자로만 이루어진 데이터타입

3) 논리형(logical): TRUE(T) 또는 FALSE(F)값으로 이루어진 데이터타입

 

단일형데이터: 한가지 데이터 유형으로만 구성된 데이터  ex. 스칼라, 벡터, 행렬, 배열

다중형데이터: 여러가지 데이터 유형으로 구성된 데이터  ex. 리스트, 데이터프레임

 

 

0. 스칼라(scalar)
   - 한 가지 데이터 유형으로 구성된 0차원 구조의 데이터

   - 길이가 1인 벡터

 

 

1. 벡터(vector)
   - 한 가지 데이터 유형으로 구성된 1차원 구조의 데이터

   - ':', c(), seq(), rep() 함수를 사용하여 선언

변수명 <- c(값)
v1 <- 1:5
v2 <- c(1,2,3,4)   
v3 <- c(1:4)         
v4 <- c(1:4,8:10)
v5 <- seq(1,100,10)      # seq(from=시작 값, to=끝 값, by=증가 값)
v6 <- rep(1,time=10)     # rep(반복할 값, time=반복할 횟수)
v7 <- rep(1:3,each=3)    # rep(반복할 값, each=각각에 대해서 반복횟수)
v8 <- rep(1:3,time=2,each=3)


> v1
[1] 1 2 3 4 5
> v2
[1] 1 2 3 4
> v3
[1] 1 2 3 4
> v4
[1] 1 2 3 4 8 9 10
> v5
[1] 1 11 21 31 41 51 61 71 81 91
> v6
[1] 1 1 1 1 1 1 1 1 1 1
> v7
[1] 1 1 1 2 2 2 3 3 3
> v8
[1] 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3


  

2. 행렬(matrix)
   - 한 가지 데이터 유형으로 구성된 2차원 구조의 데이터

   - matrix() 함수를 사용하여 선언(행개수나 열개수 둘 중 하나만 선언시 남은 열과 행의 개수 자동배정)

matrix(벡터, nrow = 행개수, ncol = 열개수)
v1 <- c(1,2,3,4,5,6)    
matrix(v1, nrow=2, ncol=3)

> matrix(v1, nrow=2, ncol=3)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6


  
3. 배열(array)
   - 한 가지 데이터 유형으로 구성된 3차원(다차원) 구조의 데이터
   - 행렬을 n차원으로 확대한 구조의 데이터

   - array() 함수를 사용하여 선언

array(변수명, dim = c(행의 수, 열의 수, 차원 수))
v1 <- c(1,2,3,4,5,6)    
array(v1, dim = c(2,2,3))

> array(v1, dim = c(2,2,3))
, , 1

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    5    1
[2,]    6    2

, , 3

     [,1] [,2]
[1,]    3    5
[2,]    4    6


4. 리스트(list)
   - (key(층)별) 여러 데이터 유형이 포함된 1차원 구조의 데이터

   - 서로 다른 구조의 데이터를 그룹으로 묶은 데이터 세트(data set)

   - list() 함수를 사용하여 선언 
   - key별로 데이터 축적/색인 가능

   - key-value 구조

리스트명 <- list(값1, 값2, ..., 값n)
리스트명 <- list(key명 = 값1, Key명 = 값2, ..., key명 = 값n)
list1 = list('a','b',1,2)
list2 <- list(key1=c(1,2,3), key2=c('a','b','c','d'))

> list1
[[1]]
[1] "a"

[[2]]
[1] "b"

[[3]]
[1] 1

[[4]]
[1] 2

> list2
$key1
[1] 1 2 3

$key2
[1] "a" "b" "c" "d"



 5. 데이터프레임(data frame)
   - (컬럼별) 여러 데이터 유형이 포함된 1차원 구조의 데이터 2차원
   - 리스트를 2차원으로 확대한 구조의 데이터 

   - data.frame() 함수를 사용하여 선언

   - key-value 구조
   - key별로 데이터 축적/색인 가능

data.frame(변수명1, 변수명2, ... , 변수명n)
v1 <- c(1,2,3,4,5,6)    
v2 <- c('a','b','c','d','e','f')
v3 <- c('A','B','C','D','E','F')
v4 <- c('가','나','다','라','마','바')
data.frame(v1,v2,v3,v4)

> data.frame(v1,v2,v3,v4)
  v1 v2 v3 v4
1  1  a  A 가
2  2  b  B 나
3  3  c  C 다
4  4  d  D 라
5  5  e  E 마
6  6  f  F 바

 

R은 자료구조가 다양한 만큼 출력된 형태를 보았을 때 어떠한 자료구조인지 구분할 수 있어야한다.

 

# 벡터의 출력 형태
[1] 1 2 3 4 5    

# 행렬의 출력 형태
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

# 배열의 출력 형태
, , 1

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    5    1
[2,]    6    2

, , 3

     [,1] [,2]
[1,]    3    5
[2,]    4    6


# 리스트의 출력 형태
[[1]]
[1] "a"

[[2]]
[1] "b"

[[3]]
[1] 1

[[4]]
[1] 2

# 데이터프레임의 출력 형태
  v1 v2 v3 v4
1  1  a  A 가
2  2  b  B 나
3  3  c  C 다
4  4  d  D 라
5  5  e  E 마
6  6  f  F 바

'R > R' 카테고리의 다른 글

[R] 09. 조건문(ifelse/if문)  (0) 2023.12.05
[R] 08. 문자열관련함수(stringr)  (0) 2023.11.29
[R] 04. 함수(function)  (0) 2023.11.22
[R] 03. 형 변환(casting)  (0) 2023.11.22
[R] 02. 인덱싱(indexing)  (0) 2023.11.22