Chapter 3 Factors

R에서 Factor 형태는 범주형(categorical) 데이터를 다룰때 사용됩니다.

3.1 팩터 생성 및 탐색

gender = factor(c('male', 'female', 'female', 'male', 'female'))
gender
## [1] male   female female male   female
## Levels: female male

factor() 함수를 통해 팩터를 생성하며, Levels에는 값들의 고유값인 female과 male이 설정되어 있습니다.

unclass(gender)
## [1] 2 1 1 2 1
## attr(,"levels")
## [1] "female" "male"
levels(gender)
## [1] "female" "male"
summary(gender)
## female   male 
##      3      2

female은 1, male은 2의 integer가 매칭되어 있으므로, unclass() 함수를 이용하여 대표값을 출력할 수 있습니다. 또한 levels() 함수를 이용해 레벨을 출력할 수 있으며, summary() 함수를 이용할 경우 각 레벨의 빈도가 출력됩니다.

3.2 레벨에 순서 부여하기

gender = factor(c('male', 'female', 'female', 'male', 'female'))
gender
## [1] male   female female male   female
## Levels: female male

레벨을 정의하지 않을 시, 알파벳 순서인 female, male의 순서로 레벨이 정의됩니다.

gender = factor(c('male', 'female', 'female', 'male', 'female'),
                levels = c('male', 'female'))
gender
## [1] male   female female male   female
## Levels: male female

반면 levels 인자를 입력하면, 레벨의 순서가 정의됩니다.

ses = c('low', 'middle', 'low', 'low', 'low', 'low', 'middle', 'low', 'middle',
        'middle', 'middle', 'middle', 'middle', 'high', 'high', 'low', 'middle',
        'middle', 'low', 'high')

ses = factor(ses, levels = c('low', 'middle', 'high'), ordered = TRUE)
ses
##  [1] low    middle low    low    low    low    middle low    middle middle
## [11] middle middle middle high   high   low    middle middle low    high  
## Levels: low < middle < high

또한 ordered 인자를 TRUE로 지정할 시, levels의 크기도 정의됩니다.

3.3 순서 재정의

library(forcats)

fct_recode(ses, small = 'low', medium = 'middle', large = 'high')
##  [1] small  medium small  small  small  small  medium small  medium medium
## [11] medium medium medium large  large  small  medium medium small  large 
## Levels: small < medium < large

forcats 패키지의 fct_recode() 함수를 이용해 팩터의 레벨을 재입력 할 수 있습니다. 이 외에도 해당 패키지에는 팩터를 다룰수 있는 다양한 함수가 존재합니다.