【发布时间】:2017-01-20 12:51:19
【问题描述】:
请注意,R 的基本命令 read.csv 的工作方式是
read.csv(file=fileName, dec=".", sep=",", header=T)而fread在下面的演示中不起作用,内联引用了分隔符。我们现在专注于 data.table 和 fread,read.csv 太慢了。
我有一个 csv 文件,其中逗号作为字段值分隔符,点作为小数点。文件MyFile.csv 的字段名称带有逗号和点,例如"Product.Apple.Green,Purple",其中双引号试图分隔点和逗号。但是,双引号的分隔不适用于 fread,这样
Sys.setlocale('LC_NUMERIC', 'fi_FI.UTF-8')
fread(file="MyFile.csv", sep=",", dec=".")
例如字段
`CustomerID, ProductID, Prod.Sub, "Prod.Sub,feature", A.B.C, "A,B,C,D"`
被读取,破折号-现在表示字段分离,如
`CustomerID - ProductID - Prod.Sub - "Prod.Sub - feature" - A.B.C - "A - B - C - D"`
其中"Prod.Sub, feature" 被错误地读取为两个字段"Prod.Sub - feature" 和"A,B,C,D" 被错误地读取为"A - B - C - D"。
如何使用 data.table 的 fread 内联转义分隔符?
【问题讨论】:
-
您使用的是哪个版本的
data.table?当我使用fread('myfile.csv')时,数据会在最新版本中正常读取(我使用您描述的字段名称制作了一个 csv 文件)。也许您可以包含 csv 文件的第一行? -
无法在 v1.9.6 上复制。
fread在dt= fread( 'CustomerID, ProductID, Prod.Sub, "Prod.Sub,feature", A.B.C, "A,B,C,D" 1,2,3,4,5,6' )上按预期工作(请注意,标题和数据之间有一个新行 - 在 cmets 中不显示) -
@Jaap data.table 是 1.10.0 版本。 R 的 sessionInfo() 数据 here 和语言环境是
C/UTF-8/C/C/C/C,如果 fread 使用分隔符的位置参数会不会有问题? -
我无法用 v1.10.0 重现这个。您能否在问题中包含重现此问题的步骤?
标签: r csv escaping data.table