반응형
◎ 자료형과 자료구조 알아보기
- mode(x) : 자료형(클래스) => 숫자형, 문자형, 논리형 ...
- typeof(x) : 자료형 => 정수형, 실수형, 문자형, 논리형 ...
- class(x) : 자료구조 => Array, List, Table ...
> x = matrix(1:9,3)
> x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> mode(x)
[1] "numeric"
> typeof(x)
[1] "integer"
> class(x)
[1] "matrix" "array"
◎ 데이터 유형 판별
<자료형 판별 함수>
is.numeric(x) | 객체 x가 수치형인가 |
is.integer(x) | 객체 x가 정수형인가 |
is.double(x) | 객체 x가 실수형인가 |
is.complex(x) | 객체 x가 복소수형인가 |
is.character(x) | 객체 x가 문자형인가 |
is.logical(x) | 객체 x가 논리형인가 |
is.factor(x) | 객체 x가 범주형인가 |
is.function(x) | 객체 x가 함수인가 |
is.na(x) | 객체 x가 결측치인가 |
is.null(x) | 객체 x가 미정의 값인가 |
> x = factor(c('m','f'))
> is.factor(x)
[1] TRUE
> x = NA
> is.null(x)
[1] FALSE
> x = is.null(x)
> is.logical(x)
[1] TRUE
◎ 데이터 구조 판별
<자료구조 판별 함수>
is.vector(x) | 객체 x가 벡터인가 |
is.list(x) | 객체 x가 리스트인가 |
is.matrix(x) | 객체 x가 행렬인가 |
is.array(x) | 객체 x가 배열인가 |
is.data.frame(x) | 객체 x가 데이터프레임인가 |
◎ 데이터 유형 변환
<자료형 변환 함수>
as.numeric(x) | 객체 x를 수치형으로 변환 |
as.integer(x) | 객체 x를 정수형으로 변환 |
as.double(x) | 객체 x를 실수형으로 변환 |
as.complex(x) | 객체 x를 복소수형으로 변환 |
as.character(x) | 객체 x를 문자형으로 변환 |
as.logical(x) | 객체 x를 논리형으로 변환 |
as.factor(x) | 객체 x를 범주형으로 변환 |
> x = c('A','B','C')
> mode(x)
[1] "character"
> x = as.factor(x)
> x
[1] A B C
Levels: A B C
> mode(x)
[1] "numeric"
> class(x)
[1] "factor"
>
> print(x)
[1] A B C
Levels: A B C
> cat(x)
1 2 3
문자형을 요인형으로 바꾸면 보기에는 A B C 로 문자같지만 mode() 함수로 자료형을 출력하면 숫자형으로 나온다.
print() 함수로 출력했을 때는 문자형으로 보이지만 cat() 함수로 출력하면 숫자형인 것을 알 수 있다.
◎ 데이터 구조 변환
<자료구조 변환 함수>
as.vector(x) | 객체 x를 벡터로 변환 |
as.list(x) | 객체 x를 리스트로 변환 |
as.matrix(x) | 객체 x를 행렬로 변환 |
as.array(x) | 객체 x를 배열로 변환 |
as.data.frame(x) | 객체 x를 데이터프레임으로 변환 |
- 벡터 변환
> 리스트
> x = 1:3
> as.list(x)
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
> list(x)
[[1]]
[1] 1 2 3
> 행렬
> x = 1:6
> as.matrix(x)
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
> matrix(x,2,3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> dim(x) = c(2,3)
> x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> 배열
> x = 1:6
> as.array(x)
[1] 1 2 3 4 5 6
> array(x,c(2,3,1))
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> dim(x) = c(2,3,1)
> x
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> 데이터프레임
> x = 1:6
> as.data.frame(x)
x
1 1
2 2
3 3
4 4
5 5
6 6
- 리스트 변환
리스트는 어떠한 자료구조로 변환을 시도하면 벡터를 제외하면 변환이 되지만 자료가 이상하게 변환된 것을 알 수 있다.
> 벡터
> x = list(3, c(1, 3, 5), "Korea")
> as.vector(x)
[[1]]
[1] 3
[[2]]
[1] 1 3 5
[[3]]
[1] "Korea"
> class(as.vector(x))
[1] "list"
>
> y = list(c(3, 4, 5))
> as.vector(y)
[[1]]
[1] 3 4 5
> class(as.vector(y))
[1] "list"
> 행렬
> as.matrix(x)
[,1]
[1,] 3
[2,] Numeric,3
[3,] "Korea"
> class(as.matrix(x))
[1] "matrix" "array"
> as.matrix(y)
[,1]
[1,] Numeric,3
> class(as.matrix(y))
[1] "matrix" "array"
> 배열
> as.array(x)
[[1]]
[1] 3
[[2]]
[1] 1 3 5
[[3]]
[1] "Korea"
> class(as.array(x))
[1] "array"
> as.array(y)
[[1]]
[1] 3 4 5
> class(as.array(y))
[1] "array"
> 데이터프레임
> as.data.frame(x)
X3 c.1..3..5. X.Korea.
1 3 1 Korea
2 3 3 Korea
3 3 5 Korea
> class(as.data.frame(x))
[1] "data.frame"
> as.data.frame(y)
c.3..4..5.
1 3
2 4
3 5
> class(as.data.frame(y))
[1] "data.frame"
- 행렬 변환
> 벡터
> x = matrix(1:6,2)
> as.vector(x)
[1] 1 2 3 4 5 6
> c(x)
[1] 1 2 3 4 5 6
> dim(x) = dim(1); x
[1] 1 2 3 4 5 6
> 리스트
> x = matrix(1:2,2)
> as.list(x)
[[1]]
[1] 1
[[2]]
[1] 2
> 배열
as.array() 함수로 변환하면 그대로 행렬이지만 dim() 함수로 차원을 조정해주면 array객체로 제대로 변환할 수 있다.
> x = matrix(1:6,2)
> as.array(x)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> class(as.array(x))
[1] "matrix" "array"
> dim(x) = c(1,3,2); x
, , 1
[,1] [,2] [,3]
[1,] 1 2 3
, , 2
[,1] [,2] [,3]
[1,] 4 5 6
> class(x)
[1] "array"
> 데이터프레임
> x = matrix(1:6,2)
> as.data.frame(x)
V1 V2 V3
1 1 3 5
2 2 4 6
- 배열 변환
> 벡터
> x = array(1:6,c(1,3,2))
> as.vector(x)
[1] 1 2 3 4 5 6
> 리스트
> as.list(x)
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] 4
[[5]]
[1] 5
[[6]]
[1] 6
> 행렬
> as.matrix(x)
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
> 데이터프레임
> as.data.frame(x)
V1 V2 V3 V4 V5 V6
1 1 2 3 4 5 6
- 데이터프레임 변환
> 벡터
> x = data.frame(a=c(1,2,3),b=c('a','b','c'))
> as.vector(x)
a b
1 1 a
2 2 b
3 3 c
> class(as.vector(x))
[1] "data.frame"
> 리스트
> as.list(x)
$a
[1] 1 2 3
$b
[1] "a" "b" "c"
> 행렬
데이터프레임을 행렬로 변환하면 자료형이 통일된다.
> as.matrix(x)
a b
[1,] "1" "a"
[2,] "2" "b"
[3,] "3" "c"
> class(as.matrix(x))
[1] "matrix" "array"
> 배열
데이터프레임을 배열로 변환하면 에러가 발생한다.
> as.array(x)
Error in `dimnames<-.data.frame`(`*tmp*`, value = list(n)) :
데이터프레임에 잘못된 'dimnames'이 주어졌습니다
<R 자료형/자료구조 - 판별과 변환>
반응형
'R > Data Type' 카테고리의 다른 글
R 데이터프레임 DataFrame - 인덱싱/관련함수 (0) | 2020.10.26 |
---|---|
R 데이터프레임 DataFrame - 생성과 저장 text/csv/excel파일 (0) | 2020.10.19 |
R 배열 Array - 생성/인덱싱 (0) | 2020.10.16 |
R 행렬 Matrix - 생성/연산/인덱싱 (0) | 2020.10.14 |
R 리스트 List - 생성/관련함수/인덱싱 (0) | 2020.08.11 |
댓글