16

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

文件的第一行是这样的:

sDATE, sTIME,iGPS_ALT, ...

然后每一行都是一个测量值:

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

当我尝试将其读入 R 时,通过

d = read.csv('filename')

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

如果我row.names = NULL加入read.csv呼叫,我会得到一个d$row.names与 sDATE 列相对应的无关列,并且所有内容都“向下移动”一列,所以它d$sDATE2:15在其中,而不是4/10/2011按需要。

如果我在 excel 中打开我的 csv,什么都不做,然后保存它,一切都很好。我必须处理数百个,所以手动保存在 excel 中不是我想要的。如果我可以通过编程方式在 python 或其他方式中预处理这些 csv,那就太好了。

4

4 回答 4

30

read.csv如果标题中的值少于其他行中的值,则仅假定存在任何行名称。因此,不知何故,您要么缺少列名,要么有一个您不想要的额外列。

于 2011-07-07T00:01:49.910 回答
4

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

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

于 2013-03-14T21:32:40.567 回答
0

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

至少对我来说是这样

于 2014-06-12T17:03:16.080 回答
0

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

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

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

于 2015-03-17T04:05:29.690 回答