7

我想使用 data.table 中的 fread,但会收到与小数点相关的警告 [这里是 ',' 而不是 '.']。通常我使用'.',但在某些情况下,我必须导入带有','作为小数点的文件。

在 read.csv 我可以设置小数点分隔符:

df <- read.csv("mydata.csv", sep=";", dec=",")

如何在 data.table 的 fread 函数中执行此操作?和

df=fread('mydata.csv',sep=';')

我收到一条警告消息:

Warning message:
In fread("mydata.csv",  :
Bumped column 7 to type character on data row 86, field contains '4,5'. 

,其中 4,5 是在 read.csv 中正确读取为 '4.5' 且 sep=',' 的值。

sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C  
4

1 回答 1

7

2014 年 10 月更新:现在在 v1.9.5 中

fread现在接受dec=','(和其他非'.' 小数分隔符),#917。新段落已添加到?fread. 如果您位于使用的国家/地区,dec=','那么它应该可以正常工作。如果没有,您将需要阅读该段落以获得额外的步骤。万一它以某种方式中断dec='.',可以使用 关闭此新功能options(datatable.fread.dec.experiment=FALSE)



上一个答案...

由于您使用的是 Linux,因此使用data.table1.8.11 您可以执行以下操作:

fread("sed 's/,/./g' yourfile", sep = ";")

(其实我觉得你甚至不需要在sep这里指定)

于 2013-11-13T17:06:33.317 回答