将因子转换为数字给出奇数结果

时间:2014-05-06 14:13:19

标签: r

我有一个数据框,我需要将2个变量从因子转换为数值变量。我有一个

        df$QTY.SHIPPED=as.numeric(df$QTY.SHIPPED)
        df$PRE.TAX.TOTAL.=as.numeric(df$PRE.TAX.TOTAL.)

发货量很好。因为它已经是整数格式。 Howerver,PRE.TAX.TOTAL。转换不好。

    PRE.TAX.TOTAL.(Factor)  PRE.TAX.TOTAL.(Numerical)
       57.8                     3856
       210                      2159

有人知道为什么会这样转换吗?

谢谢

2 个答案:

答案 0 :(得分:2)

首先转换为字符,然后转换为数字。否则它只会转换为编码因子

的基础整数
> v<-factor(c("57.8","82.9"))
> as.numeric(v)
[1] 1 2
> as.numeric(as.character(v))
[1] 57.8 82.9

答案 1 :(得分:1)

您实际上可以阅读文档。在控制台中输入?factor会产生

  

警告

     

因子的解释取决于代码和   &#34;水平&#34;属性。小心只比较相同的因素   一组等级(按相同顺序)。特别是,as.numeric应用   一个因素是没有意义的,可能是通过隐性强制发生的。至   将因子f转换为大约其原始数值,   建议使用as.numeric(levels(f))[f],效率稍高   比as.numeric(as.character(f))。

因此,更合适的方式可能是as.numeric(levels(f))[f]