当前位置 博文首页 > 文章内容

    R语言 实现将factor转换成numeric方法

    作者:shunshunshun18 栏目:未分类 时间:2021-03-27 14:45:09

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    方法1:

    such as : x <- factor(c(3,4,5,1))
    as.numeric(x)
    [1]2 3 4 1

    最好是这样:

    as.numeric(levels(x)[x])
    [1] 3 4 5 1
    

    方法2:

    as.numeric(as.character()) 

    该方法最好!

    方法3:

    read.table时候就读成数值型,R读的时候默认"NA"是missing,如果你的数据不是用NA来表示missing,那么这一列就读成string或者factor了

    补充:R语言中因子(factor)转换成数值型(numeric)的问题

    一直觉得只要是数字,不管是什么类型的,都可以通过as.numeric()函数转换为对应的numeric类型的数字,例如

    x<-“123”,x为character类型,而as.numeric(x)则为numeric类型的123。但是因子(factor)类型却不一样。

    a<-factor(c(100,200,300,301,302,400,10)),它们的值分别为100 200 300 301 302 400 10,然而

    as.numeric(a)对应的值并非100 200 300 301 302 400 10,而是2 3 4 5 6 7 1。

    因子(factor)转换成数值型(numeric)的规则是这样的:

    一共有n个数,那么转换后的数字就会在1——n中取值,数字最小的取一,次小的取二,以此类推。

    那么如何让因子(factor)类型里的数值转换对应的数值型呢?

    1. mean(as.numeric(as.character(factorname)))

    2. mean(as.numeric(levels(factorname)[factorname]))

    以上代码都可以实现将因子(factor)类型里的数值转换对应的数值型,思路都是先转换成字符型然后再转换成数值型。