2018-07-28(關(guān)于R語言中的factor)

轉(zhuǎn)載自https://blog.csdn.net/hsdcc217/article/details/78510087
在R語言中,因子(factor)表示的是一個編號或者一個等級,即,一個點。例如,人的個數(shù)可以是1,2,3,4……那么因子就包括,1,2,3,4…..還有描述協(xié)變量水平時,會用到高、中、低,也是因子,因為這些都是一個點。與之區(qū)別的向量,是一個連續(xù)性的值,例如,數(shù)值中有1,1.1,1.2……可以作為數(shù)值來計算,而因子則不可以。簡單通俗來講:因子是一個點,向量是一個有方向的范圍。在R中,如果把數(shù)字作為因子,那么在導(dǎo)入數(shù)據(jù)之后,需要將向量轉(zhuǎn)換為因子(factor),而因子在整個計算過程中不再作為數(shù)值,而是一個”符號”而已。

以實例進行解釋和說明

data <- c(1,2,2,3,1,2,3,3,1,2,3,3,1)  
> data
 [1] 1 2 2 3 1 2 3 3 1 2 3 3 1 

> fdata <- factor(data)
> fdata
 [1] 1 2 2 3 1 2 3 3 1 2 3 3 1
Levels: 1 2 3

> class(fdata)
[1] "factor"
> class(data)
[1] "numeric"

#factor()函數(shù)將原來的數(shù)值型的向量轉(zhuǎn)化為了factor類型。factor類型的向量中有Levels的概念。Levels就是factor中的所有元素的集合(沒有重復(fù))。我們可以發(fā)現(xiàn)Levels就是factor中元素排除重復(fù)后且字符化的結(jié)果。因為Levels的元素都是character。

> levels(fdata)
[1] "1" "2" "3"

#我們可以在factor生成時,通過labels向量來指定levels,繼續(xù)上面的程序:

> rdata <- factor(data,labels=c("I","II","III"))
> rdata
 [1] I   II  II  III I   II  III III I   II  III III I  
Levels: I II III

> rdata <- factor(data,labels=c("e","ee","eee"))
> rdata
 [1] e   ee  ee  eee e   ee  eee eee e   ee  eee eee e  
Levels: e ee eee

#factors可以指定數(shù)據(jù)的順序

> 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
 [1] March     April     January   November  January  
 [6] September October   September November  August   
[11] January   November  November  February  May      
[16] August    July      December  August    August   
[21] September November  February  April    
11 Levels: April August December February ... September

> table(mons)
mons
    April    August  December  February   January 
        2         4         1         2         3 
     July     March       May  November   October 
        1         1         1         5         1 
September 
        3 

#顯然月份是有順序的,我們可以為factor指定順序
mons = factor(mons,levels=c("January","February","March","April","May","June","July","August","September","October","November","December"),ordered=TRUE)

> table(mons)
mons
  January  February     March     April       May 
        3         2         1         2         1 
     June      July    August September   October 
        0         1         4         3         1 
 November  December 
        5         1 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 夢這個東西,怪吆~ 夢啊,她是另一個真實的你,不知道可取不可取,昨夜的我,聲嘶力竭的在訓(xùn)斥一個我壓根就記不得的人,...
    青澀的1912閱讀 298評論 0 0
  • 她們?yōu)榱烁帽Wo自己去了一處荒島訓(xùn)練,荒島是一個地獄般的地方,進去后的她 們 會 接 觸 怎 樣 ...
    徐欣蕾閱讀 209評論 0 1
  • 【淺淺依然】 學(xué)習(xí)力七期踐行day56 20171205 晚上到家已經(jīng)九點多,我們先畫日記,因為在朋友家玩了冰激淋...
    淺淺依然閱讀 177評論 0 0

友情鏈接更多精彩內(nèi)容