R语言-因子的构造-factor函数

参考内容:教程一,

非数值型变量(类别变量和顺序变量)在R语言中称为因子,也称为因子型变量。因子型变量内的所有非重复值,被称为因子水平(levels)。

创建因子
在R语言中可以使用factor()函数和gl()函数来创建因子变量。

(1)使用factor()函数

factor()函数的语法格式为:

f <- factor(x=charactor(), levels, labels=levels, exclude = NA, ordered = is.ordered(x), namax = NA)

其中:

x :数据向量,也就是被转换成因子的向量;最简单的因子构成可以只输入x即可。如以下代码,输出结果中Levels里面去重显示了了A B C D Z,即为因子中的水平。

> f<- c('A','B','C','A','D','A','C','Z')
> fc1<- factor(f)
> fc1
[1] A B C A D A C Z
Levels: A B C D Z

levels
可选向量,表示因子水平,并且指定了因子中水平的排序。当此参数缺省时,默认为x中包含的所有非重复值。
fc1未定义levels,因此因子中水平排序就按照字母顺序来,但是fc2定义了levels,因子中的顺序就据此调整。
fc3中,levels中因子不包含C,则输出fc3里面C所在的位置就是。

> fc2<- factor(f,levels=c('Z','B','A','D','C'))
> fc2
[1] A B C A D A C Z
Levels: Z B A D C

> fc3<- factor(f,levels=c('Z','B','A','D'))
> fc3
[1] A    B    <NA> A    D    A    <NA> Z   
Levels: Z B A D

labels:可选向量,用来给各水平单独命名(也可理解为加标签),缺省时默认取levels的值;fc4定义了labels后,输出结果就是各水平对应的标签。

fc4<- factor(f,levels=c('Z','B','A','D','C'),labels=c(26,2,1,4,3))
fc4

exclude:从x中剔除的水平值,默认为NA值。使用该命令时要注意对应调整labels的长度。
fc5中尝试剔除C,但是报错提示labels的向量长度不对,继而输出默认未定义exclude时候的结果。
fc6中将labels的数量调整为4,输出结果就将C用代替了。

> fc5<- factor(f,levels=c('Z','B','A','D','C'),labels=c(26,2,1,4,3),exclude=c('C'))
Error in factor(f, levels = c("Z", "B", "A", "D", "C"), labels = c(26,  : 
  'labels'不对;长度5应该是一或4
> fc5
[1] A B C A D A C Z
Levels: Z B A D C
> fc6<- factor(f,levels=c('Z','B','A','D','C'),labels=c(26,2,1,3),exclude=c('C'))
> fc6
[1] 1    2    <NA> 1    3    1    <NA> 26  
Levels: 26 2 1 3

ordered:逻辑值,因子水平是否有顺序(编码次序),若有取TRUE,默认取FALSE;
fc7未定义ordered,即默认为FALSE,出来的结果没有顺序。fc8定义了,故有顺序。

> fc7<- factor(f,levels=c('Z','B','A','D','C'),labels=c(26,2,1,4,3))
> fc7
[1] 1  2  3  1  4  1  3  26
Levels: 26 2 1 4 3
> fc8<- factor(f,levels=c('Z','B','A','D','C'),labels=c(26,2,1,4,3),ordered=TRUE)
> fc8
[1] 1  2  3  1  4  1  3  26
Levels: 26 < 2 < 1 < 4 < 3

nmax:水平个数的限制。对不起这个我不想研究了就这样吧我要睡觉。。。

总结:这个函数可。太。烦。了!

你可能感兴趣的:(R,r语言)