6.2 요인의 요소에 접근하기

요인의 구성 요소에 접근하는 것은 벡터의 구성 요소에 접근하는 것과 매우 유사합니다.

floor_type
## [1] earth  cement cement earth 
## Levels: cement earth
# 정수형 벡터를 색인으로 이용하는 방법입니다.
floor_type[2]                            # 2번째 요소를 반환합니다.
## [1] cement
## Levels: cement earth
floor_type[c(2, 4)]                      # 2번째와 4번째 요소를 반환합니다.
## [1] cement earth 
## Levels: cement earth
floor_type[-1]                           # 1번 요소를 제외하고 반환합니다.
## [1] cement cement earth 
## Levels: cement earth
# 논리형 벡터를 색인으로 이용하는 방법입니다.
floor_type[c(TRUE, FALSE, FALSE, TRUE)]  # 1번째와 4번째 요소를 반환합니다.
## [1] earth earth
## Levels: cement earth
# which() 함수의 이용
which(floor_type == "earth")             # 요소의 값이 earth인 색인 번호를 반환합니다.
## [1] 1 4

6.2.1 요인형 변수에 데이터 추가하기

floor_type 변수는 요인 변수로서 두 개의 수준인 “earth”와 “cement” 만을 요소 값으로 하고 있습니다. 만약에 이 변수에 “stone” 이라는 값을 추가하면 어떻게 될까요? stone이라는 값은 floor_type의 수준에 없기 때문에 Error가 발생하고 NA값이 입력됩니다. stone을 새로운 수준으로 설정하지 않은 이상stonefloor_type에 입력되지 않습니다.

floor_type[5] <- "stone"                 # 5번째 요소로 stone을 할당합니다.
## Warning in `[<-.factor`(`*tmp*`, 5, value = "stone"): invalid factor level, NA
## generated
                                         # 경고 메시시가 출력되고, NA값이 입력됩니다.

levels(floor_type) <- c(levels(floor_type), "stone")    # stone를 수준에 추가해 줍니다.
levels(floor_type)                                      # 수준에 stone이 추가되었습니다.       
## [1] "cement" "earth"  "stone"
floor_type[5] <- "stone"                                # stone이 floor_type에 새로 추가되었습니다.