6.7 요인의 서브 세팅

자료 : https://www.stat.auckland.ac.nz/~paul/ItDT/HTML/node65.html#SECTION001352000000000000000

요인의 서브세팅은 벡터의 서브세팅가 유사합니다. 그러나 요인을 서브세팅할 때 요인의 수준들은 바뀌지 않습니다.

예를 들어, 예를 들어candy_patterns 변수를 생각해 보겠습니다.

candy_patterns <- factor(c("pattern", "pattern", "pattern", "plain",
                         "plain", "plain", "pattern", "pattern", "pattern",
                         "plain", "plain", "plain"))

# 수준을 확인합니다.
levels(candy_patterns)                 # 수준은 "pattern"과 "plain" 두 개입니다.
## [1] "pattern" "plain"
# 첫 3개의 값만 서브세팅해 보겠습니다. : 벡터의 서브세팅과 유사합니다.
sub_candy <- candy_patterns[1:3]       # 첫 3개의 요소를 선택합니다.
levels(sub_candy)                      # sub_candy도 2개의 수준을 가지고 있습니다.
## [1] "pattern" "plain"
is.factor(sub_candy)                   # sub_candy도 요인 클래스입니다.
## [1] TRUE
# 서브세팅할 때 사용하지 않는 수준을 제거합니다. (drop = TRUE 옵션 사용)
sub_candy <- candy_patterns[1:3, drop = TRUE]    # 서브세팅 이후에 사용되지 않는 수준은 제거해 줍니다.
levels(sub_candy)                      # sub_candy의 수준이 "pattern" 한 개입니다.
## [1] "pattern"
# 서브세팅한 요인에 "plain" 값을 삽입해 보겠습니다.
sub_candy[4] <- "plain"                # sub_candy의 네 번째 요소로 plain을 삽입합니다. 
## Warning in `[<-.factor`(`*tmp*`, 4, value = "plain"): invalid factor level, NA
## generated
                                       # 앞에서 설명했듯이 경고메시지를 반환하고, NA값이 입력됩니다.
sub_candy[4]                           # NA가 입력되어 있습니다.
## [1] <NA>
## Levels: pattern