1.因子的創(chuàng)建
因子利用函數(shù)factor()來創(chuàng)建。其格式為
factor(x = character(), levels, labels = levels,
exclude = NA, ordered = is.ordered(x), nmax = NA)
x為字符型和數(shù)值型向量;levels為指定的因子水平;labels為指定的因子水平的名稱;exclude表示要剔除的水平;ordered 表示因子的水平是否有次序;nmax表示因子數(shù)目的上界。
> x<-c(4, 6 ,4 ,6 ,6 ,6 ,6 ,3 ,1 ,4 ,5, 3 ,1 ,2 ,6, 4 ,5 ,3 ,6, 2)
> x
[1] 4 6 4 6 6 6 6 3 1 4 5 3 1 2 6 4 5 3 6 2
> fact<-factor(x)
> fact#有六個(gè)水平:1 2 3 4 5 6
[1] 4 6 4 6 6 6 6 3 1 4 5 3 1 2 6 4 5 3 6 2
Levels: 1 2 3 4 5 6
指定因子水平的名稱
> x<-c(4, 6 ,4 ,6 ,6 ,6 ,6 ,3 ,1 ,4 ,5, 3 ,1 ,2 ,6, 4 ,5 ,3 ,6, 2)
> fact<-factor(x,label=c("A","B","C","D","E","F"))
> fact
[1] D F D F F F F C A D E C A B F D E C F B
Levels: A B C D E F
定義有次序水平的因子
> x<-c(4, 6 ,4 ,6 ,6 ,6 ,6 ,3 ,1 ,4 ,5, 3 ,1 ,2 ,6, 4 ,5 ,3 ,6, 2)
> fact<-factor(x,label=c("A","B","C","D","E","F"),order=T)
> fact
[1] D F D F F F F C A D E C A B F D E C F B
Levels: A < B < C < D < E < F
用函數(shù)gl創(chuàng)建因子向量
gl(n, k, length = n*k, labels = seq_len(n), ordered = FALSE)
n表示給定的水平個(gè)數(shù);k表示每個(gè)水平的重復(fù)數(shù)。
> fa<-gl(2,5)
> fa
[1] 1 1 1 1 1 2 2 2 2 2
Levels: 1 2
> fa<-gl(2,5,lable=c("F","M"))
> fa<-gl(2,5,label=c("F","M"))
> fa
[1] F F F F F M M M M M
Levels: F M
> fa<-gl(2,5,label=c("F","M"),ordered=T)
> fa
[1] F F F F F M M M M M
Levels: F < M
2.tapply函數(shù)
tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)
x表示向量;INDEX表示因子或者因子列表;FUN為函數(shù);simply為邏輯參數(shù),如果為FALSE,tapply返回的是列表,如果為TRUE,返回的是向量。
> x<-sample(1:4,20,replace=T)
> x
[1] 3 2 4 3 3 4 3 4 3 3 3 4 1 1 2 3 2 1 3 4
> y<-factor(x,labels=c("A","B","C","D"))
> y
[1] C B D C C D C D C C C D A A B C B A C D
Levels: A B C D
> tapply(x,y,mean)
A B C D
1 2 3 4
> tapply(x,y,sum)#返回向量
A B C D
3 6 27 20
> tapply(x,y,sum,simplify=F)#返回列表
$A
[1] 3
$B
[1] 6
$C
[1] 27
$D
[1] 20