R 因子

因子用于存储不同类别的数据类型,例如人的性别有男和女两个类别,年龄来分可以有未成年人和成年人。

R 语言创建因子使用 factor() 函数,向量作为输入参数。

factor() 函数语法格式:

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

参数说明:

  • x:向量。

  • levels:指定各水平值, 不指定时由x的不同值来求得。

  • labels:水平的标签, 不指定时用各水平值的对应字符串。

  • exclude:排除的字符。

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

  • nmax:水平的上限数量。

以下示例把字符型向量转换成因子:

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

执行以上代码输出结果为:

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

以下示例设置因子水平为 c('男','女'):

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

执行以上代码输出结果为:

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

因子水平标签

接下来我们使用 labels 参数为每个因子水平添加标签,labels 参数的字符顺序,要和 levels 参数的字符顺序保持一致,例如:

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

执行以上代码输出结果为:

[1]femalemalefemalefemalemaleLevels:female<male

生成因子水平

我们可以使用 gl() 函数来生成因子水平,语法格式如下:

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

参数说明:

  • : 设置 level 的个数

  • k: 设置每个 level 重复的次数

  • length: 设置长度

  • labels: 设置 level 的值

  • ordered: 设置是否 level 是排列好顺序的,布尔值。

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

执行以上代码输出结果为:

[1]GoogleGoogleGoogleGoogleNhoooNhoooNhoooNhoooTaobaoTaobao[11]TaobaoTaobaoLevels:GoogleNhoooTaobao
编辑于2024-05-20 12:12