fread,data.table中的小数点设置

Hen*_*enk 6 r data.table

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

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

df <- read.csv("mydata.csv", sep=";", dec=",")
Run Code Online (Sandbox Code Playgroud)

我怎样才能在data.table中的fread函数中执行此操作?同

df=fread('mydata.csv',sep=';')
Run Code Online (Sandbox Code Playgroud)

我收到一条警告信息:

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

,其中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  
Run Code Online (Sandbox Code Playgroud)

edd*_*ddi 6

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 = ";")
Run Code Online (Sandbox Code Playgroud)

(实际上我认为你甚至不需要在sep这里指定)