美文网首页
R语言factor最简单的理解

R语言factor最简单的理解

作者: 采星星的小太阳BavaLI | 来源:发表于2020-05-12 22:46 被阅读0次

    最近正在学习R语言,碰到了因子factor,自己很不理解,网上找了很多的资料,可是感觉都说的很难,自己不是很理解,所以自己决定写一篇博客来帮助和自己一样有困惑的小伙伴。

    因子factor

    首先,因子是离散的,它不是连续的,它只是一个标签。举个例子:

    > v=c(1,2,3,5)定义向量
    > v打印
    [1] 1 2 3 5
    > class(v)查看类型
    [1] "numeric"
    > v= factor(v)调用函数,把变量转化为一个因子
    > v打印
    [1] 1 2 3 5
    Levels: 1 2 3 5这是啥?先不管,我下面会说!
    > 
    > class(v)
    [1] "factor"查看类型,发现变为因子
    > v+1由于上面转换后的因子看起来很像一个数,我们知道向量是可以做运算的,在这里我们试一试,结果报错了!!!!
    [1] NA NA NA NA
    Warning message:
    In Ops.factor(v, 1) : ‘+’ not meaningful for factors
    > v=c(1,2,3,5)
    > v
    [1] 1 2 3 5
    > v+1在这里我们发现,原始的向量可以进行运算
    [1] 2 3 4 6
    > 
    

    factor看起来很像我们平时的数值,实则不然这个例子就很好的说明了这一点。

    下面我们主要介绍一个关于因子的关键函数factor()及他的一些参数!

    factor(x,levels,labels)

    这里主要说三个参数
    x,我们主要传入的是一个向量,就像上面的例子一样。

    重点在于第二、三个参数,在这里,我只是使用我自己的理解来帮助大家,如有不对,请留言指正,感谢!

    为了研究第二、三个参数我们做如下test:

    > v=c(1,1,2,3,3)#定义有重复元素的向量!很重要,因为这样更直观
    > v
    [1] 1 1 2 3 3
    > v=factor(v)
    > v
    [1] 1 1 2 3 3
    Levels: 1 2 3
    > 
    

    注意到,我们的元素是有重复的,细心的你,发现Levels: 1 2 3保存的是去重的元素,相当于python里面的集合,为什么会这样,或者说这样有什么好处,最大的好处就是节约存储空间,还有就是当数据很多且有很多重复的时候,你可以很直观的看到他真实的数据!

    改变levels

    > v=c(1,1,2,3,3)#定义有重复元素的向量!很重要,因为这样更直观
    > v=factor(v,levels = c('a','b','c'))#手动改变levels,看效果!
    > v
    [1] a a b c c#发现原来的1,2, 3变成a,b,c了!
    Levels: a b c
    

    这里有一个疑问?我的v=c(1,1,2,3,3)有五个元素,levels = c('a','b','c')只有三个 元素,并不匹配,为什么不会报错

    注意,我前面说了,factor的levels只是看不重复的的值,所以这些下该明白了吧。因为V里面不重复的就3个。
    然后就会用我们实际需要的levels来一个一个替换,在实践中也是有这种需求的。

    > v=c(1,1,2,3,3)
    > v=factor(v,labels = c('a','b','c'))
    > v
    [1] a a b c c
    Levels: a b c
    

    labels也可以实现,类比levels即可。传入的依然是c()向量。

    好啦,今天就到这里,可以说讲的很仔细了,大家慢慢悟吧,希望能帮助到爱学习的你们!如果可以,我很开心!如果想深入学习R,欢迎访问我的主页R专栏!

    相关文章

      网友评论

          本文标题:R语言factor最简单的理解

          本文链接:https://www.haomeiwen.com/subject/efhwnhtx.html