Programing/R- programming

R프로그래밍 범주형 변수 factor (categorical variable)

sosal 2014. 8. 21. 11:07
반응형

/*

 http://sosal.kr/
 * made by so_Sal
 */



factor는 R에서 제공하는 categorical variable(범주형 변수)로, 여러개의 level로 구성된다.


혈액형이라는 범주형 변수가 존재할 때, A,B,AB,O 라는 level을 가지게 된다.


> BloodType <- c("A","B","AB","O","O","A","A","O","B","B")

> summary(BloodType)

   Length     Class      Mode 

       10 character character 


위에서 정의한 BloodType이라는 vector를 factor로 형변한 하기 위해서 factor() 함수를 사용한다.



Description


The function factor is used to encode a vector as a factor (the terms ‘category’ and ‘enumerated type’ are also used for factors). If argument ordered is TRUE, the factor levels are assumed to be ordered. For compatibility with S there is also a function ordered.


is.factor, is.ordered, as.factor and as.ordered are the membership and coercion functions for these classes.


Usage


factor(x = character(), levels, labels = levels,

       exclude = NA, ordered = is.ordered(x), nmax = NA)



> BloodType <- c("A","B","AB","O","O","A","A","O","B","B")

> BloodType <- factor(BloodType)

> BloodType

 [1] A  B  AB O  O  A  A  O  B  B 

Levels: A AB B O


factor() 함수를 사용한 이후, BloodType은 A,AB,B,O라는 4가지 level을 가진 factor형 변수가 되고, 그것은 알파벳 순서로 정렬이 되어 categorical 하게 저장된다.


> summary(BloodType)

 A AB  B  O 

 3  1  3  3 



> gender <- c(1,1,2,2,1,2,2,2,1,2)

> summary(gender)

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 

    1.0     1.0     2.0     1.6     2.0     2.0 

> gender <- factor(gender)

> gender

 [1] 1 1 2 2 1 2 2 2 1 2

Levels: 1 2

> class(gender)

[1] "factor"


1과 2의 level을 가지는 factor 형으로 변환된 것을 볼 수 있음.

하지만 1과 2가 무엇을 의미하는지 파악하기 불가능하기 때문에, 이름을 가지는 label을 구성해보자.


> gender <- c(1,1,2,2,1,2,2,2,1,2)

> gender <- factor(gender, levels=c(1,2), labels=c("male","female"))

> gender

 [1] male   male   female female male   female female female male   female

Levels: male female



> summary(gender)

  male female 

     4      6