data_type
1. 스칼라(Scala)
구성인자가 하나인 벡터
2. 벡터(vector)
1차원 배열개념
동일 유형의 단일형 데이터(문자/숫자/논리)
num
1
2
| v1 <- c(1,2,3);v1
class(v1)
|
1
2
3
| >v1
[1] 1 2 3
[1] "numeric"
|
char
1
2
| v2 <- c(1,2,3,"asd");v2 # 숫자 유형이 문자로 바뀜
class(v2)
|
1
2
3
| >v2
[1] "1" "2" "3" "asd"
[1] "character"
|
named vector
벡터값에 이름 부여 가능
1
| v3 <- c(n=1,m=2,a=3);v3
|
3. 팩터(Factor)
범주형 데이터를 표현하기 위한 데이터 타입
nominal(명목명) : 크기 비교 불가 (ex 책상, 의자)
1
2
| furniture <- factor(c("desk","chair","home"), c("desk","chair")); furniture
# 표현하고자 하는 값 # 범주
|
1
2
3
| > furniture
[1] desk chair <NA> # <NA>: 범주를 벗어난 값
Levels: desk chair
|
ordinal(순서형) : 순서 비교 가능 (ex 대, 중, 소)
1
2
3
4
| size <- factor("중", c("소","중","대"),
ordered = TRUE, levels = c("대","중","소")); size
# 순서형으로 # 순서
size <- ordered("중", c("대","중","소"))
|
1
2
3
| > size
[1] 중
Levels: 소 < 중 < 대
|
팩터 함수
1
2
3
4
5
6
| levels(size) # factor 변수 level 확인
levels(size)[2] # factor 변수 [n]번째 level 확인
levels(size) <- c("큼","중간","작음") # level 수정 *덮어씀
nlevels(size) # 중복을 제거한 팩터의 level 개수
|
4. 리스트(list)
다차원 표현(1차원 벡터 응용)
다중형 데이터 #가장 복잡한 데이터 유형
여러 객체들의 모음(벡터, 행렬, 배열, 데이터프레임, 리스트 등)
Key와 value로 구성된 해시맵(hashmap)
list | 형태 |
---|
key | value |
key | value |
key | value |
list 초기화
1
2
3
4
5
6
7
8
9
| list1 <- list(key="value"
element = "item") # list1 값 덮어씀
list1 # 모든 키에 대한 모든 값 조회
# 벡터로 list 생성
list3 <- c('vec', '02)345-6958', 4000)
# 벡터는 타입이 같아야하므로 4000도 문자로 저장됨
names(list3) <- c('a', 'b', 'c') # 이름 지정 필요
|
1
2
3
4
5
6
| >list1
$key
[1] "value"
$element
[1] "item"
|
list 조회
1
2
3
4
5
6
7
8
| list1[1] # 첫번째 리스트 조회
class(xx3[1])
list1[[1]] # 첫번째 리스트의 값 조회
class(list1[[1]])
list1$name # 특정 키에 대한 값 조회
class(list1$name)
|
1
2
3
4
5
6
7
8
9
| > list1[1]
$name
[1] "value" # list
> list1[[1]]
[1] "value" # character
> list1$key
[1] "value" # character
|
list 추가
1
| list2 <- c(list1, list(키="값")); list2
|
1
2
3
4
5
6
7
8
9
| >list2
$key
[1] "value"
$element
[1] "item"
$키
[1] "값"
|
list 삭제
list key 삭제
1
| list2$키 <- NULL # 값도 삭제됨
|
list value 삭제
1
| list2$키[length(list2$키)] <- NA
|
5. 행렬(Matrix)
2차원 배열개념, 단일형 데이터 (문자/숫자/논리)
행렬 간의 사칙연산 등의 목적으로 사용
1
2
| mat1 <- matrix(1:12, nrow = 3) # byrow=T 행부터 채워짐
mat1
|
1
2
3
4
5
| > mat1 # byrow=T
[,1] [,2] [,3] [,4] # [,1] [,2] [,3] [,4]
[1,] 1 4 7 10 # [1,] 1 2 3 4
[2,] 2 5 8 11 # [2,] 5 6 7 8
[3,] 3 6 9 12 # [3,] 9 10 11 12
|
행렬 이름
1
2
3
| dimnames(mat1) <- list(c(1,2,3), c('a','b','c','d')) # 행, 열 이름 변경
rownames(mat1) <- c(1,2,3) # 행 이름 변경
colnames(mat1) <- c('a','b','c','d') # 열 이름 변경
|
1
2
3
4
| [a] [b] [c] [d]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
|
행렬 인덱싱
1
2
3
4
5
6
| mat1[2,3] # 2행 3열
mat1[2,] # 2행 전부
mat1[,-3] # 3열 제외
mat1[,2:4] # 2~4열
mat1[,c(1,3)] # 1,3열
mat1[2,c('b','c')] # 열이름 b, c인 열
|
행렬 함수
1
2
| t(mat1) # 행과 열 교환
dim(mat1) <- c(2,6) # 2행 6열로 변환
|
6. 배열(Array)
다차원 단일형 데이터 (문자/숫자/논리)
1
2
| arr1 <- array(1:24, c(3,4,2)) #(행,열,층)
arr1
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| > arr1
, , 1 # 1층
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
, , 2 # 2층
[,1] [,2] [,3] [,4]
[1,] 13 16 19 22
[2,] 14 17 20 23
[3,] 15 18 21 24
|
인덱싱 방법은 배열에 인자 하나 더 추가
7. 데이터 프레임(Data Frame)
2차원 다중형 데이터
R에서 대부분의 함수가 사용
1
2
3
4
5
6
7
8
| > head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
|