R - 通过write.csv.raw(iiOS工具包)写入CSV文件的最快方法



>我正在尝试不同的软件包,以找到最适合快速保存数据文件(例如csv文件(

的软件包。

我找到了"iotools"包和"write.csv.raw"方法,可以很好地保存有关时间流逝的数据。

但是,保存文件中的数据集具有一些有争议的功能:

  • 没有列名;
  • 双精度/浮点数带有小数符号".",但不带","。

所以我需要在文件中保存数据集以包含列名和正确的小数符号。
我的脚本如下:

library(iotools)
library(UsingR)
data(galton)
head(galton)
#option1 to save data
write.csv.raw(galton,"test.csv",append=FALSE,sep=";",col.names=TRUE)
#option2 to save data
write.table.raw(galton,"test.csv",append=FALSE,sep=";",col.names=TRUE)
read.csv2("test.csv",nrow=5)

输入数据集(来自 R(:

child parent
61.7   70.5
61.7   68.5
61.7   65.5
61.7   64.5
61.7   64.0
62.2   67.5

输出文件:

X1.61.7 X70.5
2t61.7  68.5
3t61.7  65.5
4t61.7  64.5
5t61.7    64
6t62.2  67.5  
18/

02/16更新:
在拖延者0的答案的帮助下,我设法以正确的方式使用"写.csv.raw"。

基于问题部分的数据帧的不同写入方法的比较如下:

system.time(write.csv.raw(n,"test.csv",sep=";",append=TRUE((
用户系统已用
15.61 1.17 21.92

system.time(write.table(n,"test.csv",sep=";",row.names=FALSE,dec=","((
用户系统已用
63.25 1.20 64.60

system.time(write.csv2(n,"test.csv",row.names=FALSE((
用户系统已用 63.71 1.28 65.38

system.time(write_csv(n, "test.csv", na = "NA"(( 用户系统已用
136.75 3.60 141.24

27/04/16更新:(过期(
我已经做了一些实验运行来写入/读取数据(不同的工具(。实验基于理论样本和真实样本(来自我的实践(。我试图制作可重现的脚本。希望它们对新人有用:-(

IO 实验链接:

从文件中读取数据:https://rpubs.com/demydd/166375
将数据写入文件:https://rpubs.com/demydd/170957

19/

09/16更新:
添加了羽毛包(read_feather、write_feather(fwrite 是从 data.table 包中添加的。

指向更新测试的链接:

阅读

对于列名,这是一个已知问题。建议的解决方法:

> cat(noquote(paste0(paste0(names(df),collapse = ","),"n")),file = "output.csv")
> write.csv.raw(df,"output.csv",append=TRUE)

默认情况下,write.csv.raw 不会以"\t"为我索引,但您可以尝试将 NA 用于 NSEP 参数。

您可以将列名另存为 factor,然后按如下方式使用它:

library(iotools)
library(UsingR)
data(galton)
Cnames=as.factor(colnames(galton))
write.table(galton,"test2.csv",sep=";")
test2=read.delim("test2.csv",sep = ";",)
colnames(test2)=Cnames

输出为:

head(test2)
  child parent
1  61.7   70.5
2  61.7   68.5
3  61.7   65.5
4  61.7   64.5
5  61.7   64.0
6  62.2   67.5

最新更新