首页 > 解决方案 > R不会将数据识别为数字

问题描述

自 Excel 上次更新以来,R 不会将我的文件识别为数字;甚至我过去使用的那些。我相信我的问题的根源是我的 Excel 是法语的,并且已将默认小数点从“。”更改为。到“,”(但这在过去 5 年中从未引起过问题)。


为了提取问题的根源,我尝试只使用一列数据(都带有 . 和 ,),但 R 总是给我这个错误:

“错误:(列表)对象不能被强制输入'double'”

这是数据示例(保存为 data.csv 文件)

23.15
23.35
23.46
20.88
20.77
22.05
21.5
22.65
21.93
22.65
22.47
22.75
22.05
21.95
22.3
19.48
19.44
20.55
20.5
21.65
20.83
21.85
21.77
21.95
23.35
23.55
23.86
21.38
21.29
22.35
22.6

我两个都用过:

read.csv AND read.csv2 (read.csv2 is the way to go)

在 R 中导入后,如下所示:

在此处输入图像描述

但是当我问

is.numeric(data)

我明白了

> [1] FALSE

如果我试图强迫:

as.numeric

我明白了

> Error: (list) object cannot be coerced to type 'double'

我在这里真的很茫然;这似乎是一个糟糕但简单的兼容性问题。谢谢你的帮助。


仅供参考,我已经完成了此故障排除:

标签: rexceldecimalcompatibility

解决方案


我解决了这个问题。事实证明,我在多个问题之间交替:

  1. 将 read.csv2 与我的新 Excel 更新一起使用是原始的。
  2. 在我的版本中,小数点必须是“,”,以便 Excel 将其识别为数字(R 也是。在我的版本中,R 将读取“.”但不能识别为数字“)
  3. 在我的summarise()函数(使用 dplyr 和 tidyr 包)中,我错误地将“”放在我想从中获取平均值的列名周围。前任。summarise(mean=mean("temp"))(正确的方式=>summarise(mean=mean(temp))

  4. 我没有正确地问:as.numeric(data[4])功能。正如@MrFlick 指出的那样,数据框不是数字,而是要求:as.numeric(data[[4]])挑出列的数据。as.numeric(data[,4])也有效。

  5. 最后,问题不是最新的 Excel 更新,而是我的新操作系统(High Sierra)与我的 Excel 版本(2011)不兼容。我必须更新到 2016 版本才能让文件恢复到最初的“。” 格式化并从根本上解决 R 的阅读问题。

干杯!


推荐阅读