R:as.numeric函数没有从data.frame返回正确的# [重复]
Posted
技术标签:
【中文标题】R:as.numeric函数没有从data.frame返回正确的# [重复]【英文标题】:R: as.numeric function not returning correct # from data.frame [duplicate] 【发布时间】: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 文档,它们被标记为没有小数的数字。
【问题讨论】:
【参考方案1】:你可以试试:
as.numeric(as.character(dfA1))
您还可以通过使用?options
设置stringsAsFactors = FALSE
来防止事物自动转换为因子。
发生这种情况的原因是因子实际上在内部存储为整数,而标签是您打印出来时实际显示的内容(在您的情况下为“103316”)。函数as.numeric
认为你想要的是底层整数表示。
【讨论】:
或者,您可以在 excel 中打开文件并将列格式化为数字。这应该清除 R 的翻译。 @Brandon - 是的,虽然我现在有点后悔回答这个问题,因为 Joshua 是正确的,它应该作为一个精确的 dup 关闭。 谢谢乔兰,工作就像一个魅力。我实际上尝试将 excel 中的列重新格式化为数字,但是由于某种原因并没有解决问题。 既然我已经这样做了,当我尝试从其中一个生成的单元格中拨打一个号码时,我无法这样做。我创建了一个新变量 A1 @Amanda - 这些 cmets 并不是扩展技术支持的真正合适场所。如果您认为您的问题非常快速/基本,您可以尝试在 R 聊天室中提问(他们非常友好、诚实!),或者您可以在这里提出新问题。无论哪种方式,除非您非常清楚正在输入的会产生错误的命令,否则没有人能够提供帮助。以上是关于R:as.numeric函数没有从data.frame返回正确的# [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 R 中使用 as.numeric() 时如何避免数字舍入?
将大型平面文件读入 r as.numeric 的快速方法 [重复]