[R] 요인(Factor)
요인(factor)은 범주형 데이터를 위한 데이터 타입으로 주어진 범위 내에서만 값을 할당할 수 있습니다.
#01. 요인(factor) 만들기
factor
는 값 혹은 값에 대한 범주를 의미하는 벡터이다.
1) 순서 없는 범주
성별 표현하기
- factor가 포함할 수 있는 값은 범주 벡터에 나열된 값 중 하나만 가능함.
gender <- factor('m', c('m', 'f'))
print(gender)
💻 출력결과
[1] m
Levels: m f
범주를 벗어난 경우
- 범주를 벗어난 값을 지정할 경우
<NA>
가 됨.
gender <- factor('k', c('m', 'f'))
print(gender)
💻 출력결과
[1] <NA>
Levels: m f
2) 백터나 행렬을 값으로 갖는 요인
예를 들어 설문조사를 한다고 할 때, 요인은 응답자가 답할 수 있는 답의 종류를 제한함.
좋아하는 계절을 모두 고르기
여름,가을은 범주에 속해 있지만, Winter는 범주에 속한 값이 아니므로 NA가 됨.
fav_season <- factor(c('여름','가을','Winter'), c('봄', '여름', '가을', '겨울'))
print(fav_season)
💻 출력결과
[1] 여름 가을 <NA>
Levels: 봄 여름 가을 겨울
3) 순서 있는 범주 만들기
방법(1) - factor 함수에 ordered=TRUE 라는 옵션값을 추가.
두 번째 파라미터로 지정된 백터의 순서대로 결정됨.
result <- factor('good', c('bad', 'normal', 'good'), ordered=TRUE)
print(result)
💻 출력결과
[1] good
Levels: bad < normal < good
방법(2) - ordered 함수 사용
ordered()
함수의 두 번째 파라미터로 전달하는 백터가 값의 순서가 됨.
grade <- ordered(c(1, 2), c(4, 3, 2, 1))
print(grade)
💻 출력결과
[1] 1 2
Levels: 4 < 3 < 2 < 1
#02. 요인과 관련된 함수(명령어)
1) 범주의 수 조회하기
nlevels()
함수는 파라미터로 전달된 범주의 항목 수를 반환함.- 보기의 항목수를 조회하는 것으로 이해하자.
범주의 항목 수 조회
fav_season <- factor(c('여름','가을','Winter'), c('봄', '여름', '가을', '겨울'))
cnt <- nlevels(fav_season)
print(cnt)
💻 출력결과
4
2) 범주의 항목
levels()
함수는 범주의 항목 자체를 반환함.
범주의 항목 조회
fav_season <- factor(c('여름','가을','Winter'), c('봄', '여름', '가을', '겨울'))
lvl <- levels(fav_season)
print(lvl)
💻 출력결과
"봄" "여름" "가을" "겨울"
3) 범주 변경
- 범주의 항목을 의미하는
levels(범주)
에 새로운 범주를 의미하는 백터를 주입하여 범주의 항목들을 변경 - 기존에 저장되어 있던 값은 새롭게 적용된 범주 항목에 대응되는 값으로 변경됨.
범주 항목 변경하기
fav_season <- factor('여름', c('봄', '여름', '가을', '겨울'))
print(fav_season)
# 보기 항목을 영문으로 변경
levels(fav_season) <- c('Spring', 'Summer', 'Fall', 'Winter')
# 기존에 저장되어 있던 여름은 새로운 범주에 대응되는 Summer로 변경된다.
print(fav_season)
💻 출력결과
[1] 여름
Levels: 봄 여름 가을 겨울
[1] Summer
Levels: Spring Summer Fall Winter