原文地址:http://blog.sina.com.cn/s/blog_4d9814240102vigp.html
在R語言中,因子(factor)表示的是一個符號、一個編號或者一個等級,即,一個點。例如,人的個數可以是1,2,3,4......那么因子就包括,1,2,3,4.....
還有統計量的水平的時候用到的高、中、低,也是因子,因為他是一個點。與之區別的向量,是一個連續性的值,
例如,數值中有1,1.1,1.2......可以作為數值來計算,而因子則不可以。如果用我自己的理解,簡單通俗來講:因子是一個點,向量是一個有方向的范圍。
在R中,如果把數字作為因子,那么在導入數據之后,需要將向量轉換為因子(factor),而因子在整個計算過程中不再作為數值,而是一個"符號"而已。
因子(Factor) 一個因子不僅包括分類變量本身還包括變量不同的可能水
平(即使它們在數據中不出現)。因子函數factor用下面的選項創建一
個因子:
factor(x, levels = sort(unique(x), na.last = TRUE),
labels = levels, exclude = NA, ordered = is.ordered(x))
levels 用來指定因子可能的水平(缺省值是向量x中互異的值);labels
用來指定水平的名字;exclude表示從向量x中剔除的水平值;ordered是
一個邏輯型選項用來指定因子的水平是否有次序。回想數值型或字符型
的x。下面有一些例子:
> factor(1:3)
[1] 1 2 3
Levels: 1 2 3
> factor(1:3, levels=1:5)
[1] 1 2 3
Levels: 1 2 3 4 5
> factor(1:3, labels=c("A", "B", "C"))
[1] A B C
Levels: A B C
> factor(1:5, exclude=4)
[1] 1 2 3 NA 5
Levels: 1 2 3 5
函數levels用來提取一個因子中可能的水平值:
> ff <- factor(c(2, 4), levels=2:5)
> ff
[1] 2 4
Levels: 2 3 4 5
> levels(ff)
[1] "2" "3" "4" "5"
因子(factor)和有序因子(ordered factor)
因子用來存儲類別變量(categorical variables)和有序變量,這類變量不能用來計算而只能用來分類或者計數。
因子表示分類變量,有序因子表示有序變量。
生成因子數據對象的函數是factor(),語法是factor(data, levels, labels, ...),其中data是數據,levels是因子水平向量,labels是因子的
標簽向量。
1、創建一個因子。
col <- factor(colour)
col1 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('Green', 'Red', 'Yellow')) #labels的內容替換colour相應位置對應levels的內容
col2 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('1', '2', '3'))
col_vec <- as.vector(col2) #轉換成字符向量
col_num <- as.numeric(col2) #轉換成數字向量
col3 <- factor(colour, levels = c('G', 'R'))
2、創建一個有序因子。
score1 <- ordered(score, levels = c('C', 'B', 'A')); score1
3、用cut()函數將一般的數據轉換成因子或有序因子。
exam1 <- cut(exam, breaks = 3) #切分成3組
exam2 <- cut(exam, breaks = c(0, 59, 69, 79, 89, 100)) #切分成自己設置的組
attr(exam1, 'levels'); attr(exam2, 'levels'); attr(exam2, 'class')
ordered(exam2, labels = c('bad', 'ok', 'average', 'good', 'excellent')) #一個有序因子