【发布时间】:2012-08-12 07:20:23
【问题描述】:
我被难住了。通常,read.csv 按预期工作,但我遇到了一个行为出乎意料的问题。这很可能是我的用户错误,但我们将不胜感激。
这是文件的网址
http://nces.ed.gov/ipeds/datacenter/data/SFA0910.zip
这是我获取文件、解压缩并读入的代码:
URL <- "http://nces.ed.gov/ipeds/datacenter/data/SFA0910.zip"
download.file(URL, destfile="temp.zip")
unzip("temp.zip")
tmp <- read.table("sfa0910.csv",
header=T, stringsAsFactors=F, sep=",", row.names=NULL)
这是我的问题。当我在 Excel 中打开数据 csv 数据时,数据看起来符合预期。当我将数据读入 R 时,第一列实际上命名为 row.names。 R 正在读取一行额外的数据,但我无法弄清楚导致 row.names 成为一列的“错误”发生在哪里。简单地说,它看起来像数据转移了。
然而,奇怪的是,R 中的最后一列似乎包含正确的数据。
以下是前几列中的几行:
tmp[1:5,1:7]
row.names UNITID XSCUGRAD SCUGRAD XSCUGFFN SCUGFFN XSCUGFFP
1 100654 R 4496 R 1044 R 23
2 100663 R 10646 R 1496 R 14
3 100690 R 380 R 5 R 1
4 100706 R 6119 R 774 R 13
5 100724 R 4638 R 1209 R 26
有什么想法我可能做错了吗?
【问题讨论】:
-
永远不要假设 Excel 正确地表示了 CSV 文件的内容。改为在文本编辑器中打开 CSV(这不是问题的原因,而是作为一般规则)。
-
删除
row.names = NULL参数。 -
@ttmaccer - 这很奇怪,您不需要对网站进行身份验证。我刚从网上试了一下,它自动将文件下载到我的电脑上。我正在使用 Chrome。
-
@mnel - 我也试过了,但没用。奇怪的是,R 中的最后一列数据似乎没问题。我不能只改变列名。
-
我认为这指向了问题所在,但我在 csv 中找不到有问题的行
dim(read.csv("sfa0910.csv", header = F, skip = 1))是6852 452而length(unlist(strsplit(readLines('sfa0910.csv',1), ',')))是451。