【问题标题】:averaging time series data in r xts在 r xts 中平均时间序列数据
【发布时间】:2014-09-29 18:03:53
【问题描述】:

我有时间序列数据,其中值存储在 1 分钟采样间隔结束时(即 00:00 的数据属于 23:59 - 00:00 等间隔)。

我现在想以 5 分钟为间隔进行平均,给出 00:05、00:10 等处的平均浓度。

我用下面的代码得到的是 00:04、00:09 等处的平均值,这似乎与端点函数有关,但我无法弄清楚如何正确平均(即在我的情况下为分钟) 00:01 到 00:05 报告为 00:05 等的平均值)

library(zoo)
library(xts)

t1 <- as.POSIXct("2012-1-1 0:1:0") 
t2 <- as.POSIXct("2012-1-1 0:15:0") 
d <- seq(t1, t2, by = "1 min") 
x <- rnorm(length(d)) 

z <- zoo(x, d) 

period.apply(z,endpoints(z,"mins",5),mean)

> 2012-01-01 00:04:00 2012-01-01 00:09:00 2012-01-01 00:14:00 2012-01-01 00:15:00 
      0.6864088          -0.9403631          -0.4269895           0.6728044 

【问题讨论】:

    标签: r time-series xts zoo


    【解决方案1】:

    endpoints 函数工作正常。您需要更改索引值。 00:05:00 是第 5 分钟的开始,而不是结束。

    > z <- zoo(x, d-1)
    > period.apply(z,endpoints(z,"mins",5),mean)
    2012-01-01 00:04:59 2012-01-01 00:09:59 2012-01-01 00:14:59 
              1.2324436          -0.5881076           0.5067009 
    

    【讨论】:

    • 好的,谢谢,我明白了。我如何将索引四舍五入到下一分钟(对不起,我是这个时间序列的新手)?我实际上是将输出转换回 data.frame 并且需要 5 分钟的分辨率。
    • @user3460194:您可以使用align.time 舍入到下一个nth 秒(所以n=5*60 在您的5 分钟案例中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 2016-12-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多