R 因子

因子用于存儲(chǔ)不同類別的數(shù)據(jù)類型,例如人的性別有男和女兩個(gè)類別,年齡來(lái)分可以有未成年人和成年人。

R 語(yǔ)言創(chuàng)建因子使用  factor() 函數(shù),向量作為輸入?yún)?shù)。

factor() 函數(shù)語(yǔ)法格式:

factor(x = character(), levels, labels = levels,
       exclude = NA, ordered = is.ordered(x), nmax = NA)

參數(shù)說(shuō)明:

  • x:向量。

  • levels:指定各水平值, 不指定時(shí)由x的不同值來(lái)求得。

  • labels:水平的標(biāo)簽, 不指定時(shí)用各水平值的對(duì)應(yīng)字符串。

  • exclude:排除的字符。

  • ordered:邏輯值,用于指定水平是否有序。

  • nmax:水平的上限數(shù)量。

以下示例把字符型向量轉(zhuǎn)換成因子:

x <- c("男", "女", "男", "男",  "女")
sex <- factor(x)
print(sex)
print(is.factor(sex))

執(zhí)行以上代碼輸出結(jié)果為:

[1] 男 女 男 男 女
Levels: 男 女
[1] TRUE

以下示例設(shè)置因子水平為 c('男','女'):

x <- c("男", "女", "男", "男",  "女",levels=c('男','女'))
sex <- factor(x)
print(sex)
print(is.factor(sex))

執(zhí)行以上代碼輸出結(jié)果為:

levels1 levels2 
男      女      男      男      女      男      女 
Levels: 男 女
[1] TRUE

因子水平標(biāo)簽

接下來(lái)我們使用 labels 參數(shù)為每個(gè)因子水平添加標(biāo)簽,labels 參數(shù)的字符順序,要和 levels 參數(shù)的字符順序保持一致,例如:

sex=factor(c('f','m','f','f','m'),levels=c('f','m'),labels=c('female','male'),ordered=TRUE)
print(sex)

執(zhí)行以上代碼輸出結(jié)果為:

[1] female male   female female male  
Levels: female < male

生成因子水平

我們可以使用 gl() 函數(shù)來(lái)生成因子水平,語(yǔ)法格式如下:

gl(n, k, length = n*k, labels = seq_len(n), ordered = FALSE)

參數(shù)說(shuō)明:

  • n: 設(shè)置 level 的個(gè)數(shù)

  • k: 設(shè)置每個(gè) level 重復(fù)的次數(shù)

  • length:  設(shè)置長(zhǎng)度

  • labels: 設(shè)置 level 的值

  • ordered: 設(shè)置是否 level 是排列好順序的,布爾值。

v <- gl(3, 4, labels = c("Google", "Nhooo","Taobao"))
print(v)

執(zhí)行以上代碼輸出結(jié)果為:

 [1] Google Google Google Google Nhooo Nhooo Nhooo Nhooo Taobao Taobao
[11] Taobao Taobao
Levels: Google Nhooo Taobao
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清