【发布时间】:2015-08-08 14:05:13
【问题描述】:
我正在使用来自data.table 的fread 将csv 文件读入R。读取过程因此错误而停止:
fstDF <- fread("dat.csv")
Read 34.5% of 2000004 rowsError in fread("dat.csv") :
Expected sep (',') but new line or EOF ends field 25 on line 800747 when reading data: John,,,ID,362526197318501X,M,19730218, ,,F,,CHN,44,4403,,,,,,,13828890538,,, ,M
我检查了数据,发现错误是由于字段中的换行符将一行记录分成两行造成的。就像下面示例数据中以Steve 开头的行一样:
Name,CardNo,Descriot,CtfTp,CtfId,Gender,Birthday,Address,Zip,Dirty,District1,District2,District3,District4,District5,District
6,FirstNm,LastNm,Duty,Mobile,Tel,Fax,EMail,Nation,Taste,Education,Company,CTel,CAddress,CZip,Family,Version,id
Mike,,,OTH,010-116321,M,19000101,,100080, ,,CHN,0,0,,,,,,10116,010-82808028,010-82828028-208,chenmeng@dist.
Steve,,,GID,0282,M,19000101,,051430, ,,CHN
,0,0,,,,,,13831193762,0311-88030066,0311-88030088,info@shineway.com,,,,,
Nicholas,,,OTH,010-125321,F,19000101,,100097,,,CHN,0,0,,,,,,10125,010-88400202,010-88400260,,,,,,,,,,,4
Abrham,,,OTH,010-130321,F,19000101,,100029,,,CHN,0,0,,,,,,10130,010-51292052/3-802,010-51292052/3-811,
Bill,,,OTH,010-142321,F,19000101,,100007,,,CHN,0,0,,,,,,10142,010-67687044,010-67687044,baiguoshouyue@sina
Zabrina,,,OTH,010-186321,F,19000101,,100101,,,CHN,0,0,,,,,,13942697025,010-64869596/0411-668895950,0411-6688519
Julia,,,OTH,021-044321,M,19000101,,201206,,,CHN,0,0,,,,,,21044,021-28995000*208,021-50315077,jane.dai@parker.com
Dave,,,OTH,021-127321,M,19000101,,200008,,,CHN,0,0,,,,,,21127,021-55150244,021-55150344,,,,,,,,,,,9
Cecilia,,,OTH,021-151321,F,19000101,,201108,,,CHN,0,0,,,,,,21151,021-61451188,021-61452602,reception.china@eurotherm.co
此数据是从Microsoft SQL Server 导出的。我无法访问数据库,我不知道导出过程有什么问题。但我肯定知道这是错误的换行符导致阅读问题。
这是关于 stackoverflow 的类似问题(没有明确的解决方案): Importing csv file to R new line issue
问题:
如何用换行符读取csv 数据?
【问题讨论】:
-
添加
sep=","和sep2="\n"有效吗? -
@Jaap 不幸的是,它不起作用(带有相同的错误消息)。还是谢谢大家。
-
改用
read.csv。它适用于我的系统。 -
@Jaap 有 200 万行数据,我还在等待
read.csv完成。 -
你可能会找到一些有用的替代品here
标签: r csv data.table