예를 들어, 성별을 팩터로 만드는 경우를 생각해보자. 성별은 범주형 데이터 중 명목형 데이터에 해당하며, “m”(남성Male)과 “f”(여성Female) 두 가지 값이 가능하다. 따라서 남성을 저장한 변수 sex를 다음과 같이 생성할 수 있다.
> sex <- factor("m", c("m", "f")) > sex [1] m Levels: m f
위 코드에서 sex에는 “m”이 저장되었고, 이 팩터가 담을 수 있는 값의 레벨은 “m”, “f”로 제한되었다. c( )는 ‘2.4 벡터’ 절에서 설명할 벡터를 뜻하며, c(“m”, “f”)는 쉽게 “m”, “f”가 저장된 배열로 생각하면 된다.
팩터 변수는 nlevels( )로 레벨의 수를 알 수 있고, levels( )로 레벨의 목록을 볼 수 있다.
> nlevels(sex) [1] 2 > levels(sex) [1] "m" "f"
levels( )의 반환 값은 벡터며, 벡터는 다른 언어의 배열처럼 사용할 수 있다. 따라서 각 레벨의 값을 다음과 같이 구할 수 있다. R에서 색인(인덱스)Index은 0이 아닌 1부터 시작한다는 점에 유의하기 바란다.
> levels(sex)[1] [1] "m" > levels(sex)[2] [1] "f"
팩터 변수에서 레벨 값을 직접 수정하고자 한다면 levels( )에 값을 할당하면 된다. “m”을 “male”로, “f”를 “female”로 바꿔보자.
> sex [1] m Levels: m f > levels(sex) <- c("male", "female") > sex [1] male Levels: male female
여러 개의 값을 팩터로 만들고자 한다면 factor( )의 인자 x에 벡터를 지정한다.
> factor(c("m", "m", "f"), c("m", "f"))
[1] m m f
Levels: m f
levels 인자를 생략하면 데이터로부터 자동으로 레벨의 목록을 파악한다.
> factor(c("m", "m", "f"))
[1] m m f
Levels: f m
factor( )는 기본적으로 데이터에 순서가 없는 명목형 데이터를 만든다. 순서형 데이터를 원한다면 ordered( )를 사용하거나 factor( ) 호출 시 ordered=TRUE를 지정한다.
> ordered("a", c("a", "b", "c"))
[1] a
Levels: a < b < c
앞서와 달리 ‘Levels:’에 순서가 ‘a < b < c’로 표시되어 있음을 볼 수 있다.