R 将因子转换为数值,给出奇数结果

R 将因子转换为数值,给出奇数结果,r,R,我有一个数据框,我需要将两个变量从因子转换成数值变量。我有一个 df$QTY.SHIPPED=as.numeric(df$QTY.SHIPPED) df$PRE.TAX.TOTAL.=as.numeric(df$PRE.TAX.TOTAL.) 装运的数量换算得很好。因为它已经是整数格式。然而,税前总额。转换不好 PRE.TAX.TOTAL.(Factor) PRE.TAX.TOTAL.(Numerical) 57.8

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

        df$QTY.SHIPPED=as.numeric(df$QTY.SHIPPED)
        df$PRE.TAX.TOTAL.=as.numeric(df$PRE.TAX.TOTAL.)
装运的数量换算得很好。因为它已经是整数格式。然而,税前总额。转换不好

    PRE.TAX.TOTAL.(Factor)  PRE.TAX.TOTAL.(Numerical)
       57.8                     3856
       210                      2159
有人知道为什么会这样转变吗


谢谢

先转换为字符,然后再转换为数字。否则,它将只是转换为对因子进行编码的基础整数

> v<-factor(c("57.8","82.9"))
> as.numeric(v)
[1] 1 2
> as.numeric(as.character(v))
[1] 57.8 82.9
>v作为数字(v)
[1] 1 2
>as.数字(as.字符(v))
[1] 57.8 82.9

您实际上可以阅读文档。在控制台中键入
?因子

警告

一个因素的解释取决于代码和参数 “级别”属性。请注意,仅将因素与相同因素进行比较 一组级别(以相同的顺序)。特别是,如所应用的 对于一个因素来说是没有意义的,并且可能通过隐含的胁迫发生。到 将因子f转换为近似其原始数值, 建议使用数字(级别(f))[f],效率略高 而不是作为.numeric(作为.character(f))

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

尝试
as.numeric(as.character((df$quaty.SHIPPED))