我正在尝试使用R在Excel不擅长的工作中进行一些分析。但是,我从Excel中保存的CSV文件都不能被R读取。我尝试在OpenOffice中创建CSV也具有相同的结果。作为测试,我从教学网站下载CSV:
http://taddylab.com/teaching.html
作为测试,我尝试从这个网站打开“pickup.csv”并且它被正确阅读了。但是,当我在Excel中打开文件并将其保存为新的csv并尝试再次阅读时,它不再起作用。这表明问题与我的软件输出的csv文件有某种关联。这不是局限于Excel的问题,但显然在OpenOffice中创建的csv具有相同的问题。
对于失败的读取,我收到一个错误和多个警告:
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
more columns than column names
In addition: Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
line 1 appears to contain embedded nulls
2: In read.table(file = file, header = header, sep = sep, quote = quote, :
line 2 appears to contain embedded nulls
3: In read.table(file = file, header = header, sep = sep, quote = quote, :
line 5 appears to contain embedded nulls
4: In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on 'simplest.csv'
这是两个文件中的数据,只是超级简单:
year miles price make
2008 17638 14995 GMC
2003 174000 8500 Dodge
2001 1500 9998 Dodge
2007 22422 23950 GMC
2007 34815 19980 GMC
1997 167000 5000 GMC
1999 142000 2800 Dodge
2003 86000 7900 Dodge
2002 115000 6700 Dodge
知道这里有什么问题吗?我在韩国的工作环境中工作,但正如您所看到的,文件中没有奇怪的标记。但是,我下载的文件之间的图标确实看起来不同,所以我想知道它是否是一些编码问题:
https://imgur.com/gallery/lFKUL
编辑:这是失败的一行。这不是很有启发性
> > a<-read.csv("pickup.csv")
> > a1<-read.csv("testpickup.csv") Error in make.names(col.names, unique = TRUE) : invalid multibyte string 1 In addition: Warning messages: 1: In read.table(file = file, header = header, sep = sep, quote =
> quote, : line 1 appears to contain embedded nulls 2: In
> read.table(file = file, header = header, sep = sep, quote = quote, :
> incomplete final line found by readTableHeader on 'testpickup.csv'
Pickup.csv是原始文件,testpickup.csv是我通过Excel运行的版本 - 例如,我在Excel中打开了pickup.csv,点击另存为csv,然后将其命名为TestPickup。请记住,这些文件具有相同的内容。为了澄清,我可以从taddylab页面中读取.sv文件,只是因为某种原因,我的Excel创建的csv文件无法读取“read.csv”。
解决:显然,它的加密阻碍了它。不确定这是否适用于每个文件或每个设置,但我将excel数据复制并粘贴到一个文本文件中,最终作为制表符分隔表。请阅读:
df2<-read.table("samplefile.txt", sep="\t", header=TRUE)
现在我可以玩数据了
答案 0 :(得分:0)
使用函数read.csv,因为它使用标题和分隔符的正确设置,这可能是更一般的read.table函数的问题。我刚用页面上的1个csv文件尝试过,它工作正常。
答案 1 :(得分:0)
显然,它的加密阻碍了它。没有什么比学习更有用了,对不起,如果你在公司场合,那就要注意了。
编辑:不确定这是否适用于每个文件或每个设置,但我将excel数据复制并粘贴到一个文本文件中,最终作为制表符分隔表。请阅读:
df2<-read.table("samplefile.txt", sep="\t", header=TRUE)
现在我可以玩数据了