【问题标题】:Group time-series observations dynamically in R在 R 中动态分组时间序列观察
【发布时间】:2016-03-21 09:51:59
【问题描述】:

我有五天的时间序列数据,格式为xts 对象。数据生成为:

library(xts)
Sys.setenv(TZ="Asia/Kolkata")
seq <- timeBasedSeq('2015-06-01/2015-06-05 23')
z <- xts(1:length(seq),seq)

现在,我想在 for 循环中动态地将具有相似时间戳(仅 H:M:S)的数据分组,然后对每个组执行所需的操作。在这里,我面临两个问题:

  1. 我应该如何在 xts 时间索引上运行 for 循环。我的意思是,我可以使用minutesxts 对象进行遍历吗?

  2. 我应该如何将具有相似时间戳的观察分组并执行所需的操作。例如,找出上午 11 点的所有观测值。所有 5 天并计算回归系数。是否有任何定义的函数可以动态地对时间序列观察进行分组?

在所有这些操作中,我不想丢失xts 索引。

【问题讨论】:

  • 要在上午 11 点查找所有 obs 并保留 xts 索引,例如,您可以做idx &lt;- which(strftime(index(z), "%H:%M:%S")=="05:00:00"); z2 &lt;- z[idx]。我不知道这是否是 xts 方式。

标签: r time-series xts


【解决方案1】:

您可以通过 HH:MM:SS split 您的数据,然后遍历结果列表。

# convert to factor because split.xts will pass f to endpoints() if f is character
# (even if it's more than one element). split.zoo is called if f is factor.
y <- split(z, factor(format(index(z), "%H%M%S")))
# loop over each time group
l <- lapply(y, FUN)
# combine results
x <- do.call(rbind, l)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多