데이터 유형
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 |