【问题标题】:R: as.numeric function not returning correct # from data.frame [duplicate]R:as.numeric函数没有从data.frame返回正确的# [重复]
【发布时间】:2011-10-18 13:15:50
【问题描述】:

可能重复:
R - How to convert a factor to an integer\numeric in R without a loss of information

我正在使用read.xls 导入一个excel 文档。我知道这个命令使用read.table 并将所有内容作为“因素”返回。我无法上传我的数据直接告诉read.xls 哪些列是数字,因为所有列都有以前的分类数据。所以我一直在提取我想要的数字数据列,然后想将它们从 data.frames 转换为数字数据,但是当我使用 as.numeric 时,我收到的数字与原始数据不对应。

例如:

这些是我的名为 dfA1 的 data.frame 的前 6 行,它是一个 96,1 向量

         [,1]
[1,] "103316"
[2,] "130720"
[3,] "141808"
[4,] "131864"
[5,] "148144"
[6,] "145760"

当我执行as.numeric(dfA1) 时,我收到:

[1]  2  18  29  19  43  40

我完全不知道为什么我会得到这些数字,也不知道它是如何得出这些数字的。我检查了我的原始 xls 文档,它们被标记为没有小数的数字。

【问题讨论】:

    标签: r transformation dataframe


    【解决方案1】:

    你可以试试:

    as.numeric(as.character(dfA1))
    

    您还可以通过使用?options 设置stringsAsFactors = FALSE 来防止事物自动转换为因子。

    发生这种情况的原因是因子实际上在内部存储为整数,而标签是您打印出来时实际显示的内容(在您的情况下为“103316”)。函数as.numeric 认为你想要的是底层整数表示。

    【讨论】:

    • 或者,您可以在 excel 中打开文件并将列格式化为数字。这应该清除 R 的翻译。
    • @Brandon - 是的,虽然我现在有点后悔回答这个问题,因为 Joshua 是正确的,它应该作为一个精确的 dup 关闭。
    • 谢谢乔兰,工作就像一个魅力。我实际上尝试将 excel 中的列重新格式化为数字,但是由于某种原因并没有解决问题。
    • 既然我已经这样做了,当我尝试从其中一个生成的单元格中拨打一个号码时,我无法这样做。我创建了一个新变量 A1
    • @Amanda - 这些 cmets 并不是扩展技术支持的真正合适场所。如果您认为您的问题非常快速/基本,您可以尝试在 R 聊天室中提问(他们非常友好、诚实!),或者您可以在这里提出新问题。无论哪种方式,除非您非常清楚正在输入的会产生错误的命令,否则没有人能够提供帮助。
    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多