我想使用来自data.table的fread,但得到与小数点相关的警告[这里是'","而不是'.']。通常我使用".",但在某些情况下,我必须导入带有","作为小数点的文件。
在读取中.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 是正确读取的值,在 write.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
2014 年 10 月更新:现在在 v1.9.5 中
fread
现在接受dec=','
(和其他非"."小数分隔符),#917。?fread
中添加了一个新的段落。如果您位于使用dec=','
的国家/地区,那么它应该可以正常工作。如果没有,您将需要阅读该段落以获取额外的步骤。万一它以某种方式破坏dec='.'
,可以使用options(datatable.fread.dec.experiment=FALSE)
关闭此新功能。
以前的答案...
由于您使用的是 Linux,因此使用 data.table
1.8.11 可以执行以下操作:
fread("sed 's/,/./g' yourfile", sep = ";")
(实际上我认为您甚至不需要在此处指定sep
)