使用 R 在一个 .csv 文件中写入不同的数据帧

Posted

技术标签:

【中文标题】使用 R 在一个 .csv 文件中写入不同的数据帧【英文标题】:Write different data frame in one .csv file with R 【发布时间】:2021-12-28 06:35:07 【问题描述】:

我有 3 个数据框,我希望将它们写在一个 .csv 文件中,一个在其他文件之上,而不是在同一个表中。因此,一个 csv 文件中有 3 个不同的表。它们都有相同的尺寸。

write.csv 的问题:它不包含“append”功能

write.table 的问题:来自write.table 的 csv 文件不能像来自write.csv 的那些一样被 Excel 2010 漂亮地读取

帖子我已经阅读,但我无法找到解决问题的方法:

write.csv() a list of unequally sized data.frames Creating a file with more than one data frame

解决方案?

【问题讨论】:

Excel 可以导入文本文件(制表符分隔/固定宽度)。见office.microsoft.com/en-us/excel-help/… 【参考方案1】:

我们使用sink 文件:

# Sample dataframes:
df1 = iris[1:5, ]
df2 = iris[20:30, ]

# Start a sink file with a CSV extension
sink('multiple_df_export.csv')

 # Write the first dataframe, with a title and final line separator 
cat('This is the first dataframe')
write.csv(df1)
cat('____________________________')

cat('\n')
cat('\n')

# Write the 2nd dataframe to the same sink
cat('This is the second dataframe')
write.csv(df2)
cat('____________________________')

# Close the sink
sink()

【讨论】:

【参考方案2】:

write.csv 只是在后台调用write.table,并带有适当的参数。所以你可以通过 3 次调用 write.table 来实现你想要的。

write.table(df1, "filename.csv", col.names=TRUE, sep=",")
write.table(df2, "filename.csv", col.names=FALSE, sep=",", append=TRUE)
write.table(df3, "filename.csv", col.names=FALSE, sep=",", append=TRUE)

实际上,您可以通过使用 rbind 将数据帧组合成单个 df,然后调用 write.csv 一次来避免整个问题。

write.csv(rbind(df1, d32, df3), "filename.csv")

【讨论】:

感谢您的回答,但write.table 不是解决方案...我更新了我的问题..请看一下我上传的图片 试试看会发生什么。

以上是关于使用 R 在一个 .csv 文件中写入不同的数据帧的主要内容,如果未能解决你的问题,请参考以下文章

使用 R 将多个数据帧写入 .csv 文件

Pyspark - 将数据帧写入 2 个不同的 csv 文件

如何使用 R 将数据帧/矩阵写入 CSV,但值中有逗号

在 PySpark 中将数据帧写入 CSV 后重命名文件 [重复]

R如何在将csv文件写入磁盘之前估计它的大小

Pyspark 写入数据帧并将其保存到 csv 文件中会出现错误