当我尝试read.csv()
该文件时,我有一个CSV,我收到警告警告消息:
In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on ...
尽管已经为解决方案搜索了StackOverflow和R-help,但我无法隔离这个问题。
这是数据的Dropbox链接:https://www.dropbox.com/s/h0fp0hmnjaca9ff/PING%20CONCOURS%20DONNES.csv
答案 0 :(得分:18)
如Hendrik Pon所述,该消息表明文件的最后一行不以行尾(EOL)字符结束(换行符(\ n)或回车符+换行符\ n \ r \ n \ n))的
补救措施很简单:
所以这是你的文件没有警告
df=read.table("C:\\Users\\Administrator\\Desktop\\tp.csv",header=F,sep=";")
df
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 Date 20/12/2013 09:04 20/12/2013 09:08 20/12/2013 09:12 20/12/2013 09:16 20/12/2013 09:20 20/12/2013 09:24 20/12/2013 09:28 20/12/2013 09:32 20/12/2013 09:36
2 1 1,3631 1,3632 1,3634 1,3633 1,363 1,3632 1,3632 1,3632 1,3629
3 2 0,83407 0,83408 0,83415 0,83416 0,83404 0,83386 0,83407 0,83438 0,83472
4 3 142,35 142,38 142,41 142,4 142,41 142,42 142,39 142,42 142,4
5 4 1,2263 1,22635 1,22628 1,22618 1,22614 1,22609 1,22624 1,22643 1,2265
但我认为你不应该以这种方式阅读,因为你必须再次重塑数据帧,谢谢。
答案 1 :(得分:2)
我在记事本中创建数据矩阵时遇到了同样的问题。 所以我来到最后一行数据矩阵并按下回车键。现在我有一个" n"行数据矩阵和一个新的空白行,光标位于" n + 1"线。 问题解决了。
答案 2 :(得分:1)
我对.xls文件有同样的问题。
我的解决方案是将文件保存为制表符分隔的.txt。然后,您也可以手动将.txt扩展名更改为.xls,然后可以使用read.delim
打开数据框。
无论如何,这是克服这个问题的非常粗鲁的方式。
答案 3 :(得分:0)
这不是CSV文件,每行都是一列,您可以手动解析它,例如:
file <- '~/Downloads/PING CONCOURS DONNES.csv'
lines <- readLines(file)
columns <- strsplit(lines, ';')
headers <- sapply(columns, '[[', 1)
data <- lapply(columns, '[', -1)
df <- do.call(cbind, data)
colnames(df) <- headers
print(head(df))
请注意,您可以忽略该警告,因为缺少最后一行。
答案 4 :(得分:0)
是否拥有“适当的” CSV文件取决于首先用于生成该文件的软件。
考虑Google表格。每当通过utils::download.file
下载的CSV文件少于五行时,就会发出警告。这可能与以下事实有关:(utils:read.table
)
通过查看输入的前五行(如果输入少于五行,则查看整个输入)来确定数据列的数目,或者如果指定了
col.names
且更长,则从<markers> <marker id="2" name="Diane Gold, CORPORATE TAI CHI means do it in a group." address="Boca Raton, FL 33432, USA" lat="26.340200" lng="-80.081400" type="school"/> <marker id="3" name="Tai Chi - Stress Management and Relaxation Technology" address="10100 Roe Ave, Overland Park, KS 66207, USA" lat="38.945300" lng="-94.639400" type="school"/> <marker id="4" name="Wise Orchid Taijiquan and QiGong" address="2002 E Union St, Seattle, WA 98122, USA" lat="47.613200" lng="-122.306000" type="school"/> </marker>
的长度开始确定
以我的短暂经验,如果CSV文件中的数据为矩形,则可以忽略该警告。
现在考虑使用LibreOffice Calc。无论CSV文件中的行数如何,都不会发出任何警告。
答案 5 :(得分:0)
我遇到了类似的问题,但“输入方法”没有解决。提到错误后,我注意到数据帧的行数少于CSV的行数。我注意到一些非字母数字值阻碍了R的导入。
我关注了Aurezio在[以下链接](https://stackoverflow.com/a/29150226)上的评论,以删除非字母数字值(我包括空格)
以下是代码段:
Function CleanCode(Rng As Range)
Dim strTemp As String
Dim n As Long
For n = 1 To Len(Rng)
Select Case Asc(Mid(UCase(Rng), n, 1))
Case 32, 48 To 57, 65 To 90
strTemp = strTemp & Mid(UCase(Rng), n, 1)
End Select
Next
CleanCode = strTemp
End Function
然后我将CleanCode用作最终结果的函数
答案 6 :(得分:0)
另一种选择:从 R 发送一个额外的换行符(而不是打开文件)
来自Getting Data from Excel to R
cat("\n", file = file.choose(), append = TRUE)
答案 7 :(得分:-2)
或者您可以直接打开该excel文件并将其另存为.csv文件,然后警告说警告已消失。