1. 程式人生 > >R語言入門--R中的factor

R語言入門--R中的factor

如果學過Java或其他高階語言,應該有列舉型別這個概念,個人理解,R中的factor類似於這個列舉型別,但又有不同,畢竟Java中的enum本質上是整數,可以當成整數使用,但R中的factor卻不可以直接當整數來使用,例如不能對factor型別的資料進行大小比較。但是可以進行等於或不等於的比較。

如果要進行大小比較,可以把factor型別的資料轉換為字元型或數字型再比較。

(1) 建立factor

>mycolor<-factor(c("R","G","G","R","B"),levels =c("R","G","B"),labels=c("RED","GREEN","BLUE"))
> mycolor
[1] RED   GREEN GREEN RED   BLUE 
Levels: RED GREEN BLUE

> groupId<-factor(sample(1:3,10,rep=T))
> groupId
 [1] 3 3 3 2 2 3 2 2 1 2
Levels: 1 2 3

(2)等於或不等於的比較

> mycolor[mycolor=='GREEN']
[1] GREEN GREEN
Levels: RED GREEN BLUE
> mycolor[mycolor!="GREEN"]
[1] RED  RED  BLUE
Levels: RED GREEN BLUE

> groupId[groupId==3]
[1] 3 3 3 3
Levels: 1 2 3


(3) 大小比較

> groupId[groupId<3]
 [1] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
Levels: 1 2 3
Warning message:
In Ops.factor(groupId, 3) : ‘<’ not meaningful for factors

轉換型別後比較:

> groupId[as.numeric(groupId)<3]
[1] 2 2 2 2 1 2
Levels: 1 2 3