【问题标题】:R: Very basic example for averaging a Time SeriesR:平均时间序列的非常基本的示例
【发布时间】:2014-01-30 10:38:49
【问题描述】:

我对 R 很陌生,研究了几篇关于时间序列和移动平均的帖子和网站,但根本找不到一个有用的提示来平均一个特殊的时间段。

我的数据是通过 readcsv 生成的表格,其中一列中包含日期和时间,其他几列中包含值。数据中的时间步长不是恒定的,所以有时是 5 分钟,有时是 2 小时。例如。

2014-01-25 14:50:00, 4, 8
2014-01-25 14:55:00, 3, 7
2014-01-25 15:00:00, 1, 4
2014-01-25 15:20:24, 12, 34
2014-01-25 17:19:00, 150, 225
2014-01-25 19:00:00, 300, 400
2014-01-25 21:00:00, NA, NA
2014-01-25 23:19:00, 312, 405

所以我寻找一个平均图

  1. 任意间隔(例如 30 分钟、1 小时、1 天等)计算数据平均值。因此应汇总较低的步骤,而应分解较高的步骤。
  2. (已删除,因为从时间序列 D 中获取每小时值是微不足道的,该时间序列 D 用 D/x 平均 X 小时。)
  3. 不应考虑标记为 NA 的数据。因此,该函数不应通过 Na 间隙进行插值/平滑处理,并且执行线图不应将 NA 间隙与线之间的点连接起来。

我已经试过了

aggregate(list(value1=data$value1,value2=data$value2), list(time=cut(data$time, "1 hour")), sum)

但这不能满足需求 1 和 3,并且无法分解每 2 小时的数据步骤。

【问题讨论】:

  • 你能提供一个数据框样本或数据链接吗?
  • 你能定义“每小时价值”并解释它与平均值有何不同吗?至于第 3 点,大多数R 函数都有一个na.rmna.omit 参数,可以从计算中删除NA,但不清楚您所说的“不连接点”是什么意思。
  • 我试图在这个编辑中解释更多。当时间步长不恒定时,执行简单均值无法正确聚合/分解。
  • 所以当 R 社区没有回答时,我猜想没有解决方案?
  • 找到两个链接,这可能会帮助您解决问题:stat.ethz.ch/pipermail/r-help/2012-August/334180.html 通常,如果您想要一个好的链接来开始您的 R 中时间序列分析之旅,此链接可能会有所帮助:@987654322 @如果有帮助,请告诉我。

标签: r time-series aggregate moving-average


【解决方案1】:

回答点 3:plot 自动跳过 NA 值并换行。

试试这个例子:

plot(c(1:5,NA,NA,6:10),t='l')

现在,如果您想纯粹出于图形目的在时间间隔内“平滑”或平均,最简单的方法可能是先用NA 分隔每一行的数据,然后对每个小节分开。

【讨论】:

  • 谢谢,但由于数据是大量的行,任意分布的 NA 行,手动执行分段平均是不切实际的。但是您的示例很好地表明,线图不会通过 NA 间隙连接,所以我认为一旦有人知道第 1 点的解决方案,问题就解决了。
  • rollmean 文档:“k:滚动窗口的整数宽度”。由于我有不同长度的时间步,这似乎不是正确的事情。这就是我问的原因。
猜你喜欢
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 2020-12-22
  • 2016-12-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
相关资源
最近更新 更多