10.8 컬럼의 데이터 타입 변환

10.8.1 컬럼의 데이터 타입 확인

컬럼의 데이터 타입은 str() 함수로도 확인할 수 있습니다. 또한 다음의 함수들을 사용하여 데이터 타입을 손쉽게 확인할 수 있습니다.

함수 설명
is.factor(x) 주어진 객체 x가 팩터인가
is.numeric(x) 주어진 객체 x가 숫자를 저장한 벡터인가
is.character(x) 주어진 객체 x가 문자열을 저장한 벡터인가
is.matrix(x) 주어진 객체 x가 행렬인가
is.array(x) 주어진 객체 x가 배열인가
is.data.frame(x) 주어진 객체 x가 데이터 프레임인가

10.8.2 데이터 구조의 변환

10.8.2.1 리스트를 데이터 프레임으로 변환하기

리스트 구조의 데이터 경우, 각 요소의 길이가 같다면 data.frame() 함수 또는 as.data.frame() 함수를 이용하여 데이터 프레임으로 변경할 수 있습니다.

lst <- list(x=c(1,2),y=c("A","B"))
df1 <- as.data.frame(lst); str(df1)
## 'data.frame':    2 obs. of  2 variables:
##  $ x: num  1 2
##  $ y: chr  "A" "B"

10.8.2.2 행렬을 데이터 프레임으로 변환하기

행렬의 경우는 각 열의 길이가 같기 때문에 data.frame() 함수 또는 as.data.frame() 함수를 이용하여 데이터 프레임으로 변경할 수 있습니다.

mat <- matrix(c(1,2,3,4), ncol=2)
df2 <- data.frame(mat); str(df2)
## 'data.frame':    2 obs. of  2 variables:
##  $ X1: num  1 2
##  $ X2: num  3 4

10.8.3 열의 데이터 구조 변환

10.8.3.1 문자형 벡터를 요인으로 , 요인을 문자형 벡터로 변환하기

df1 과 같은 경우 y 컬럼이 문자형으로 되어 있습니다.

이를 as.factor() 함수를 이용하여 요인형으로 변환할 수 있습니다. 요인형으로 변환한 다음, factor() 함수를 이용 levels 인수를 설정하여 레벨의 순서를 바꿀 수도 있으며, ordered 함수를 이용하여 서열형으로도 변경할 수 있습니다.

# df1의 문자형 y 컬럼을 요인형으로 강제 변환합니다
df1$y <- as.factor(df1$y)       # y 컬럼을 요인형으로 변경합니다.
str(df1)                        # 변경된 구조를 확인합니다.
## 'data.frame':    2 obs. of  2 variables:
##  $ x: num  1 2
##  $ y: Factor w/ 2 levels "A","B": 1 2
# levels 인수를 이용하여 y 컬럼의 수준 순서를 바꿀 수 있습니다.
df1$y <- factor(df1$y, levels = c("B", "A"))
str(df1)
## 'data.frame':    2 obs. of  2 variables:
##  $ x: num  1 2
##  $ y: Factor w/ 2 levels "B","A": 2 1
# ordered() 함수를 이용하여 y 컬럼을 서열형 요인으로 변환할 수 있습니다.
df1$y <- ordered(df1$y, c("B", "A") )
str(df1)
## 'data.frame':    2 obs. of  2 variables:
##  $ x: num  1 2
##  $ y: Ord.factor w/ 2 levels "B"<"A": 2 1
# y 컬럼을 요인형에서 다시 문자형으로 변환해 보겠습니다. 
df1$y <- as.character(df1$y)
str(df1)
## 'data.frame':    2 obs. of  2 variables:
##  $ x: num  1 2
##  $ y: chr  "A" "B"

이러한 컬럼의 데이터 유형 변환은 제2부 제2장에서 살펴본 벡터의 데이터 유형 강제 변환을 참고하기 바랍니다.

10.8.4 데이터 구조의 변환 함수

한편 지금까지 살펴본 벡터, 요인, 행렬, 배열, 리스트 그리고 데이터 프레임 간의 데이터 구조 변환은 다음의 함수들을 이용할 수 있습니다.

함수 의미
as.factor(x) 주어진 객체 x를 팩터로 변환
as.numeric(x) 주어진 객체 x를 숫자를 저장한 벡터로 변환
as.character(x) 주어진 객체 x를 문자열을 저장한 벡터로 변환
as.matrix(x) 주어진 객체 x를 행렬로 변환
as.array(x) 주어진 객체 x를 배열로 변환
as.data.frame(x) 주어진 객체 x를 데이터 프레임으로 변환