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