【问题标题】:R - Writing data to CSV in a loopR - 在循环中将数据写入 CSV
【发布时间】:2015-11-10 03:51:11
【问题描述】:

我有一个循环遍历变量列表(在 csv 中),访问数据库并提取相关数据。它在 4 个不同的时间段内执行此操作(取决于变量)。

我试图让 R 将此数据写入 csv,但目前我只能让它将最后一个变量的数据存储在 4 个不同的 csv 文件中,因为它每次都会覆盖前一个变量。

我希望将这些变量的所有数据在一个时间段内全部保存在同一个文件/工作表中。 (所以要么是 4 个工作表,要么是 4 个 csv 文件,其中包含所有数据)这是因为在将变量输入到脚本的下一个循环之前,我需要对变量进行一些数据操作。

我希望它是这样的,但需要 4 个单独的工作表/文件,以便我可以涵盖每个时间段。

date/time  | var1 | var2 |  ...  | varn

我会发布代码,但即使只发布相关的循环,周围的代码也不会是 ~150 行。 我对 R 不熟悉(我可以按照脚本编写,但很难编写自己的脚本),我继承了这个项目,没有很长时间工作。

注意:每个变量都以不同的频率记录 - 有些变量每小时只有一个数据点,有些则每分钟一个,因此需要根据记录的时间(到最接近的分钟)匹配这些数据点。

编辑:我希望我已经解释得足够清楚了

【问题讨论】:

  • 你试过 write.csv(..., append = T) 吗?
  • @Henk 说了什么。或者,您可以使用连接来避免每次打开/关闭的开销。
  • 您是要将所有内容写入一个文件还是四个不同的文件?也许您只能发布写入文件的代码,而不是数据读取部分。
  • @Heroka 目前在循环的末尾是一个简单的write.csv(VarS,file="DataS.csv")(除了有4个)。
  • @Henk,append =T 似乎没有做任何不同的事情,最后一个变量是唯一保存的变量。

标签: r loops csv for-loop export-to-csv


【解决方案1】:

四个不同的 .csv 文件最简单,因为您可以在循环中执行以下操作:

outfile.name <- paste('Sales', year.of.data, sep='')
write.csv(outfile.name, out.filepath, row.names=FALSE)

您还可以将数据附加到一个 data.frame 中,然后一次将其全部导出到一张表中。您将无法将 .csv 导出到多个工作表,因为 CSV 不允许您拥有多个工作表。

【讨论】:

  • 明白了,是4个文件。我不确定如何将它附加到数据帧中,这是否能够匹配数据点的时间?
  • 如果文件的格式都相同且变量名相同,您可以将它们读入并重新绑定它们(即附加或堆叠它们)。如果您需要更多细节,我会编辑您的帖子以包含您的一些数据(通过使用 dput)。另外,欢迎来到 SO - 如果您发现答案有用,我们将不胜感激,如果它最终解决了您的问题,您可以将其标记为正确。
  • 这差不多了,但是数据中存在差距(不同的采样率),并且它目前正在平铺数据以填补差距(例如,一个变量只有 10 个数据项,而一个变量只有 60 个数据项另一个,然后这 10 个重复 6 次)我想如果我能以某种方式匹配时间戳,我可以避免这种情况?
  • 不看数据就很难判断,但这听起来像是一个不同的问题。如果我在上面解决了您的问题,我将不胜感激,甚至将答案标记为正确,然后您可以使用其他数据打开另一个问题。
  • 它在顶部的主帖中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 2019-09-20
  • 1970-01-01
  • 2021-05-13
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多