write.csv.raw编写csv文件的最快方法(iotools包)

时间:2016-02-09 15:03:16

标签: r csv

我正在尝试使用不同的软件包来找到最适合快速保存csv数据文件的方法。

我找到了'iotools'软件包和方法'write.csv.raw',它非常适合保存有关时间的数据。

但是,保存文件中的数据集存在一些有争议的特征:

  • 没有列名;
  • double / float数字带小数点“。”但不是“,”。

所以我需要保存文件中的数据集,使其具有列名和正确的小数符号 我的脚本如下:

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
2\t61.7  68.5
3\t61.7  65.5
4\t61.7  64.5
5\t61.7    64
6\t62.2  67.5  

18/02/16更新:
在procrastinator0的答案的帮助下,我设法以正确的方式使用'write.csv.raw'。

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

  

system.time(write.csv.raw(N, “test.csv”,月= “;”,追加= TRUE))
     用户系统已过     15.61 1.17 21.92

     

system.time(write.table(N, “test.csv”,月= “;”,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包中添加的。

指向更新测试的链接:

to read
to write

2 个答案:

答案 0 :(得分:1)

对于列名称,这是known issue。建议的解决方法:

> 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参数。

答案 1 :(得分:0)

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

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