R无法将数据识别为数字

时间:2018-08-20 15:53:52

标签: r excel decimal compatibility

自从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中,它就是这样的:

enter image description here

但是当我问

is.numeric(data)

我知道

> [1] FALSE

如果我尝试胁迫:

as.numeric

我知道

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

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


仅供参考,我已经完成了以下疑难解答:

  • 转换了所有旧的“。”到“,”(否则Excel不会将它们视为数字,R也不会。)
  • 将Excel中的默认语言从法语更改为英语。由于我使用的是Mac,因此只能更改“编辑”,而不是默认的显示语言。
  • 笔记本电脑的默认英语语言。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。原来我是在多个问题之间交替进行:

  1. 在我的新Excel更新中使用read.csv2是最原始的。
  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的阅读问题。

干杯!