본문 바로가기

R_statistics/Rs_preparation

[R프로그래밍] factor, 범주형 변수들의 level 설정하기

R 에서 데이터프레임을 다루다보면, 

factor 들의 level 이 우선적으로 알파벳 순서를 따라가기 때문에,

저희가 원하는 factor 들의 순서로 먹히지 않는 경우가 종종 있습니다.


일례로, "Yes" 와 "No" 로 구성된 factor 가 있다면, 

No 가 reference (기준 범주) 로 설정되게 됩니다.


이러한 경우에 factor 들의 level 을 우리가 원하는 방식으로 설정을 해줘야겠죠?

바로 오늘 포스팅의 내용입니다.


data 는 iris data 를 이용할 것이며, 

iris 의 Species 변수의 level 를 저희가 원하는 대로 변경을 해보겠습니다.

일단, iris data 를 불러와서, Species 의 기본 level 을 살펴보겠습니다.


data(iris)
levels(iris$Species) 

여기서 결과값은 [1] "setosa" , "versicolor" , "virginica"  로 나오게 됩니다. 

 

iris$Speciesf <- factor(iris$Species, levels=c("versicolor","virginica","setosa"))
levels(iris$Speciesf)


이 순서를 내가 원하는대로 바꾸고 싶다. 

위의 예제처럼 "versicolor", "virginica", "setosa" 의 순서로 바꿀 수도 있고, 

아니면 원하는 순서로 지정을 해주면 됩니다.

원리는 기존의 iris$Species 변수를 새롭게 factor 로 지정하면서, level 을 재설정하는 방식입니다.



iris$Speciesr <- relevel(iris$Species, ref="virginica")
levels(iris$Speciesr) 


만일 나는 전체의 level 을 변경하고 싶지는 않고, reference 가 되는 level 만을 재설정하고 싶다.

이럴때 사용하게 되는 명령어가, relevel 명령어가 되겠습니다.


위의 코드를 살펴보시면, 

relevel (level을 변경하길 원하는 변수, ref= "reference 로 설정하고자 하는 level ") 로 구성됩니다.

위의 예제는 "virginica" 를 reference value 로 설정하는 예입니다.


알고 계시면 유용하게 사용할 수 있으니 꼭 기억해주세요^^


도움이 되셨다면, '공감' 버튼 부탁드립니다^^.