【问题标题】:Getting a monthly time series from weekly data从每周数据中获取每月时间序列
【发布时间】:2014-08-17 14:36:02
【问题描述】:

我检查了几个关于时间序列聚合的问题,但没有找到我想要的。

我有一个zoo 对象,包含 10 年来的每周数据,并且我计算了该系列的每月滚动平均值。我想处理与此相对应的月度数据,并为此将每个月的最后一个每周数据点(作为整个月的代表)拉入一个单独的时间序列中。

我已经尝试了 aggregate ts 函数,但由于间距不均匀(即 4 周并不总是一个月等)而遇到了麻烦。

【问题讨论】:

  • 你想用这个意思做什么?你用的是什么框架? (Excel、R、MatLab、perl、...)您如何知道您的时间序列转换是否正确完成 - 您的优点是什么?
  • 这主要是关于如何在 R 中做到这一点。我投票结束作为题外话,这个问题在 Stackoverflow.com 上r 标签下会更好。

标签: r time-series


【解决方案1】:

月份长度不同的事实应该没有问题。看下面的例子:

> library(xts)
> dates  <- as.Date("2013-01-01") + 7*(0:52)
> y.week <- zoo(rnorm(365),order.by=dates)
> head(y.week)
2013-01-01 2013-01-08 2013-01-15 2013-01-22 2013-01-29 2013-02-05 
 0.3648757 -0.7247121  0.4815929  0.5967042  1.6272563  0.8472303 
> y.mon  <- aggregate(y.week,
+                     by = format(dates,format="%Y-%m"),
+                     FUN=sum)
> head(y.mon)
   2013-01    2013-02    2013-03    2013-04    2013-05    2013-06 
 2.3457170  1.9640368 -0.3259688 -0.8710992  0.5430847 -0.1107915 

查看strptime 的帮助页面以查看您可以使用的格式字符串 代替上面的"%Y-%m"

【讨论】:

  • 或使用by = as.yearmon(dates)
猜你喜欢
  • 2021-07-15
  • 2021-05-21
  • 1970-01-01
  • 2022-12-11
  • 2020-09-20
  • 2016-06-29
  • 2012-09-22
  • 1970-01-01
  • 2021-01-17
相关资源
最近更新 更多