【问题标题】:decimal point setting in fread, data.tablefread、data.table 中的小数点设置
【发布时间】:2013-11-13 15:57:46
【问题描述】:

我想使用 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  

【问题讨论】:

  • 您使用的是什么操作系统? See here 解决方法。
  • @SimonO101 - 我在 Linux Debian 64 位。我必须导入 ',' 和 '.' 的组合。小数点文件,因此更改语言环境无济于事。
  • 没有理由不能在两次读取之间更改它。一旦数据进入,R 会以同样的方式对待它(即使用 .,除非您在 options(OutDec) 中指定不同的内容。
  • 谢谢。由于问题出在单个文件上,因此我将只进行搜索/替换。

标签: r data.table


【解决方案1】:

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

【讨论】:

  • +1 我正要粘贴这个(我花了一段时间才弄明白!)。你不需要echo 结果吗,例如fread( "echo | sed 's/,/\\./g' C:/Data/mydata.csv" ) 并且由于它是一个系统调用,它不会在 R 中的当前工作目录之外工作,所以您需要指定路径?
  • @SimonO101 刚刚检查过,它像宣传的那样工作:) (至少在普通 Linux 上 - 听起来你在 Mac 上,我从未在 Mac 上测试过),路径规则是与没有sed 的简单fread 相同; echo 在 Linux 上也不会做任何事情(再次不确定 Mac)
  • 遗憾的是,我在工作中使用 Windows 并使用GoW(Windows 上的 GNU)但是我刚刚检查过,我不需要echo,此外路径规则被搞砸了使用 UNC 路径名映射的网络用户共享 - 在本地驱动器上工作得很好!我应该更仔细地测试! :-)
  • @eddi- 是的! linux 规则,和往常一样。适用于 fread("sed 's/,/./g' 'yourfile'", sep = ";") [quotes around yourfile]。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 2014-10-28
  • 2022-11-09
  • 1970-01-01
  • 2015-10-23
  • 2015-12-30
  • 2013-10-14
相关资源
最近更新 更多