r - 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'
我在这里真的很茫然;这似乎是一个糟糕但简单的兼容性问题。谢谢你的帮助。
仅供参考,我已经完成了此故障排除:
- 转换所有旧的“。” 到 "," (否则 Excel 不会将它们视为数字,R 也不会。
- 将 Excel 中的默认语言从法语更改为英语。由于我有一台 mac,我只能更改“编辑”而不是默认显示语言。
- 我的笔记本电脑的默认语言是英语。
解决方案
我解决了这个问题。事实证明,我在多个问题之间交替:
- 将 read.csv2 与我的新 Excel 更新一起使用是原始的。
- 在我的版本中,小数点必须是“,”,以便 Excel 将其识别为数字(R 也是。在我的版本中,R 将读取“.”但不能识别为数字“)
在我的
summarise()
函数(使用 dplyr 和 tidyr 包)中,我错误地将“”放在我想从中获取平均值的列名周围。前任。summarise(mean=mean("temp"))
(正确的方式=>summarise(mean=mean(temp))
我没有正确地问:
as.numeric(data[4])
功能。正如@MrFlick 指出的那样,数据框不是数字,而是要求:as.numeric(data[[4]])
挑出列的数据。as.numeric(data[,4])
也有效。最后,问题不是最新的 Excel 更新,而是我的新操作系统(High Sierra)与我的 Excel 版本(2011)不兼容。我必须更新到 2016 版本才能让文件恢复到最初的“。” 格式化并从根本上解决 R 的阅读问题。
干杯!
推荐阅读
- objective-c - 如何在后台线程和主线程之间切换
- node.js - 获取调用脚本的 package.json 的相对路径
- angular - APP_INITIALIZER 和依赖令牌解析问题
- winapi - 指向内存映射文件的指针是否应该跨进程保持一致?
- mysql - 无法在 macos 上安装 flask-mysqldb
- c# - 为什么我们在进行本地化时需要 SharedResources 类
- jira - Jira 中的速度图表
- sql-server - 在会计交易中添加 CR/DR
- ios - 获取接口方向的safeAreaInsets?
- azure-web-app-service - 如何使用 Blazor 通过 Azure 网站发送电子邮件