【问题标题】:Aggregate xts object by time of day按时间聚合 xts 对象
【发布时间】:2014-04-12 00:04:54
【问题描述】:

我有一个 xts 对象,其中包含每天的分钟价​​格,如下所示。我想汇总这些时间序列,所以我有一个表,其行名等于时间 hh:mm:ss(没有日、月、年),并且我想计算的每个统计数据都有多个列。

                    ESH4.Open ESH4.High ESH4.Low ESH4.Close ESH4.Volume
2014-03-05 18:00:00   1873.75   1874.00  1873.50    1873.50         452
2014-03-05 18:01:00   1873.50   1873.75  1873.25    1873.50         453
2014-03-05 18:02:00   1873.25   1873.50  1873.25    1873.25          61
2014-03-05 18:03:00   1873.50   1873.50  1873.25    1873.25          21
2014-03-05 18:04:00   1873.50   1873.50  1873.00    1873.25         456
2014-03-05 18:05:00   1873.00   1873.25  1872.25    1872.25        1004
2014-03-05 18:06:00   1872.50   1872.75  1872.25    1872.75          98
2014-03-05 18:07:00   1872.50   1872.75  1872.25    1872.50         361
2014-03-05 18:08:00   1872.25   1872.25  1871.75    1871.75         476
2014-03-05 18:09:00   1871.75   1872.25  1871.75    1872.25         177

需要ESH4.Close栏目:

          stat1 stat2 stat3
18:01:00  ...
18:02:00  ... 
18:03:00  ...

【问题讨论】:

  • 您要解决的更大问题是什么?可能有比尝试做您在问题中要求的更好的方法来解决它。
  • 我想计算过去 30 天内一天中每一分钟的平均价格变化(和其他统计数据)。

标签: r xts


【解决方案1】:

这可以通过aggregate 函数来完成。注意xts没有定义aggregate方法,所以aggregate.zoo会被分派。

# create some sample data
set.seed(21)
i <- Sys.time()+seq_len(60*24*30)*60
x <- xts(rnorm(length(i)),i)
# call aggregate.zoo
z <- aggregate(x, format(index(x),"%H:%M"), function(d) c(mean(d),sd(d)))
# note that 'z' is a zoo object, not xts
head(z)                   
# 00:00 21422 12673.5
# 00:01 21423 12673.5
# 00:02 21424 12673.5
# 00:03 21425 12673.5
# 00:04 21426 12673.5
# 00:05 21427 12673.5

【讨论】:

    猜你喜欢
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2021-03-17
    • 1970-01-01
    • 2016-11-09
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多