请注意,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内联转义分隔符?
答案 0 :(得分:1)
关于fread
的酷事,它可以使用系统命令(至少在Unix上)。
因此,请使用sed
,例如:
fread("sed 's/,\ /| /g' MyFile.csv", sep = "|", dec = ".")
将|
替换为可能不会发生冲突的任何分隔符。
注意:在文本示例中,分隔符显示为,
+ (空格)。没有空间,解决方案不起作用!
另外:没有空格(仅,
),引用的字段由fread
正确使用data.table
版本1.10.0进行处理