read.csv row.names

时间:2011-07-06 11:31:46

标签: r read.csv

我正在尝试将一个面向列的csv文件读入R作为数据框。

文件的第一行是这样的:

sDATE, sTIME,iGPS_ALT, ...

然后每个附加行都是一个衡量标准:

4/10/2011,2:15,78, ...

当我尝试通过

将其读入R时

d = read.csv('filename')

我得到一个重复的row.names错误,因为R认为数据的第一列是行名,并且因为所有测量都是在同一天进行的,所以第一列中的值不会改变。 / p>

如果我将row.names = NULL放入read.csv调用,我会得到一个无关的列d$row.names,该列对应于sDATE列,并且所有内容都被“移位”了一列,所以{ {1}}中会有d$sDATE,而不是2:15

如果我在excel中打开我的csv,什么也不做,然后保存它,一切都很酷。我必须处理数百个,因此手动保存excel不是我想要的。如果有一些程序化的东西我可以用python或其他方式预处理这些csv,那就太好了。

4 个答案:

答案 0 :(得分:29)

如果标头中的值少于其他行,则

read.csv仅假定存在任何行名称。所以不知何故,你要么缺少一个列名,要么有一个你不想要的额外列。

答案 1 :(得分:4)

你可能还有一个额外的栏目 但它可能源于原始电子表格中数据右侧的一个实际为空的杂散格式化单元格(或单元格列)。
以下是关键:Excel将在CSV文件中为表格中格式化的任何空单元格保存空白字段。 这就是您可能遇到此问题的原因:因为当您使用Excel打开CSV文件并重新保存时,R的问题就会消失。
发生了什么:当您将CSV文件拉回Excel时,它会随后忽略数据右侧或下方的空单元格(因为CSV文件没有格式化)。

结论:小心将格式化的电子表格保存为CSV文件,以便与统计软件包一起使用。杂散格式表示CSV中的杂散字段。

答案 2 :(得分:0)

一个可能的原因可能是标题行后面的行末尾有一个额外的逗号。 Excel默默地忽略它们并在保存时删除。

至少对我来说是这样的

答案 3 :(得分:0)

我遇到了同样的问题。它通过添加header=TRUE如下所示得到解决

tempdata <- read.csv("C:\\File.csv",header=TRUE)

日期列的第一列已正确对齐。