쭈쌤
쭈쌤 Hello World

[R] 자료구조(3)-요인

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[R] 자료구조(3)-요인≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

[R] 자료구조(3)-요인

요인(factor)은 범주형 데이터를 위한 데이터 타입으로 주어진 범위 내에서만 값을 할당할 수 있습니다.

#01. 요인(factor) 만들기

1) 순서 없는 범주

c()함수에 나열한 값들 중 하나만 지정할 수 있다.

1
2
3
# factor(값, 범주를 의미하는 백터)
gender <- factor('m', c('m', 'f'))
gender
▶ 출력결과
1
2
3
4
5
m

Levels:
	1. 'm'
	2. 'f'

범주를 벗어난 값을 지정할 경우 <NA>가 된다.

1
2
gender <- factor('k', c('m', 'f'))
gender
▶ 출력결과
1
2
3
4
5
<NA>

Levels:
	1. 'm'
	2. 'f'

2) 백터나 행렬도 요인의 값이 될 수 있다.

예를 들어 설문조사를 한다고 할 때, 요인은 응답자가 답할 수 있는 답의 종류를 제한한다.

1
2
3
4
# 좋아하는 계절을 모두 골라주세요~~
# 여름,가을은 범주에 속해 있지만, Winter는 범주에 속한 값이 아니므로 NA가 된다.
fav_season <- factor(c('여름','가을','Winter'), c('봄', '여름', '가을', '겨울'))
fav_season
▶ 출력결과
1
2
3
4
5
6
7
8
9
1. 여름
2. 가을
3. <NA>

Levels:
	1. '봄'
	2. '여름'
	3. '가을'
	4. '겨울'

3) 순서 있는 범주 만들기

방법(1) - factor 함수에 ordered=TRUE 라는 옵션값을 추가.

두 번째 파라미터로 지정된 백터의 순서대로 결정된다.

1
2
result <- factor('good', c('bed', 'normal', 'good'), ordered=TRUE)
result
▶ 출력결과
1
2
3
4
5
6
good

Levels:
	1. 'bed'
	2. 'normal'
	3. 'good'

방법(2) - ordered 함수 사용

orderd()함수의 두 번째 파라미터로 전달하는 백터가 값의 순서가 된다.

1
2
grade <- ordered(c(1, 2), c(4, 3, 2, 1))
grade
▶ 출력결과
1
2
3
4
5
6
7
8
1. 1
2. 2

Levels:
	1. '4'
	2. '3'
	3. '2'
	4. '1'

#02. 요인과 관련된 함수(명령어)

1) 범주의 수 조회하기

1
2
cnt <- nlevels(gender) # 범주의 수 표시
cnt
▶ 출력결과
1
2

2) 범수의 항목

1
2
lvl <- levels(gender)
lvl
▶ 출력결과
1
2
1. 'm'
2. 'f'

3) 범주 변경

1
2
3
# 새로운 범주 정의
season <- factor('Summer', c('Spring', 'Summer', 'Fall', 'Winter'))
season
▶ 출력결과
1
2
3
4
5
6
7
Summer

Levels:
	1. 'Spring'
	2. 'Summer'
	3. 'Fall'
	4. 'Winter'

범주의 항목을 의미하는 levels(범주)에게 새로운 범주를 의미하는 백터를 주입하여 범주의 항목들을 변경한다.

기존에 저장되어 있던 Summer는 그에 대응되는 여름으로 변경된다.

1
2
levels(season) <- c('봄', '여름', '가을', '겨울')
season
▶ 출력결과
1
2
3
4
5
6
7
여름

Levels:
	1. '봄'
	2. '여름'
	3. '가을'
	4. '겨울'
Rating:

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[R] 자료구조(3)-요인≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

comments powered by Disqus