>我正在尝试不同的软件包,以找到最适合快速保存数据文件(例如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.92system.time(write.table(n,"test.csv",sep=";",row.names=FALSE,dec=","((
用户系统已用
63.25 1.20 64.60system.time(write.csv2(n,"test.csv",row.names=FALSE((
用户系统已用 63.71 1.28 65.38system.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
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