因子型(factor)表示編號或登記,是用來存儲類別的數據類型,是離散的,與連續性值相對。如果把數字作為因子,那么在導入數據后,需要將向量轉換為因子(factor),而因子在整個計算過程中不再作為數值,而是作為“符號”。 講的很好的R因子
data <- c(1,2,2,3,1,2,3,3,1,2,3,3,1) data fdata<-factor(data) fdata class(fdata) class(data) levels(fdata) rdata<-factor(data,labels = c("I","II","III")) rdata
rdata<-factor(data,labels=c("e","ee","eee")) rdata mons <- c("March","April","January","November","January", "September","October","September","November","August", "January","November","November","February","May","August", "July","December","August","August","September","November", "February","April") mons<-factor(mons) mons mons = factor(mons,levels=c("January","February","March","April","May","June","July","August","September","October","November","December"),ordered=TRUE) mons table(mons) ?table()
#factor()函數將原來的數值型的向量轉化為factor類型。factor類型的向量有levels和labels的概念。Levels就是factor所有因素的集合(沒有重復),Levels就是factor中元素排除重復后字符化的結果,levels元素都是character類型,可以在生成factor時,指定levels。
factor最大的作用是指定數據的順序,即指定后邊作圖過程自變量的顯示順序。
Levels表示因子的值域。所以在指定了levels后,factor每個元素值只能取因子水平中的值或缺失。
創建因子用factor()函數創建因子型變量。factor(x=character(),levels,lables=levels) #默認的labels等於levels
還可以通過factor()修改level
可以通過factor()函數創建因子,factor(x=character(),levels,labels=levels,exclude=NA,orderd=is.ordered(x),nmax=NA)
x: 字符向量
levles: 水平,字符類型,用於設置x可能包含的唯一值,元素的集合,默認值是x的所有唯一值。 注:如果x不是字符向量,那么就會用as.character(x)轉換為字符向量,然后取x向量的水平。x向量的取值與levels有關。levels順序默認是向量的獨特元素集合。通過設置levels 調整子圖順序。如
#jointcalling_GenotypeQC$maf=factor(jointcalling_GenotypeQC$maf,levels=c("All", "MAC=1","0-0.01","0.01-0.05","0.05-0.2","0.2-0.5")) glimpse(jointcalling_GenotypeQC) #ggboxplot(jointcalling_GenotypeQC,x="Steps",y="CONCORDANCE",color = "Steps",facet.by = "maf",bxp.errorbar = T,palette = "aaas")+stat_compare_means(aes(label = ..p.format..),label.x=1.4)
labels: 水平的標簽,用於對每個因子水平添加標簽,可以對因子水平levels重命名。順序與levels順序對應一致.
exludes: 排除的字符
ordered: 邏輯值,指定水平是否有序
nmax: 水平的上限數量
如 sex<-factor(c('f','m','f','f','m'),levels=c('f','m'))
> levels(sex) #查看因子水平
[1] "f" "m"
> nlevels(sex) #查看level長度
[1] 2
> sex=factor(c('f','m','f','f','m'),levels=c('f','m'),labels=c('female','male'),ordered=TRUE) # 典型例子。
因子是無序的,因子的順序實際指因子水平的順序,有序因子的因子水平是有序的,即ordered=TRUE,默認值。
> factor(mtcars$cyl) #因為cyl列的levels是默認的按從小到大排序的獨特集:4,6,8 對其對應的重賦值alpha beta gamma. 因此出來的值就是 beta..
[1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4
Levels: 4 6 8