计算ts对象的月平均值

Cha*_*ase 8 r

给定每月ts对象,例如:

dat <- ts(c(295, 286, 300, 278, 272, 268, 308, 321, 313, 308, 291, 296, 
294, 273, 300, 271, 282, 285, 318, 323, 313, 311, 291, 293, 297, 
273, 294, 259, 276, 294, 316, 325, 315, 312, 292, 301), frequency = 12)
Run Code Online (Sandbox Code Playgroud)

我怎样才能按月计算平均值?即我想计算1月,1年1月,2年+ 1月,3年等的平均值.然后能够比较2月的......

我想到的一种方法是将其转换为12列的矩阵并使用colMeans(),但我想有一种更好的方法可以利用对象的time()方面ts()

colMeans(matrix(dat, ncol = 12, byrow = TRUE))
Run Code Online (Sandbox Code Playgroud)

Cha*_*ase 9

好的,所以在来到SO之前我应该​​再向谷歌提供一次搜索,因为这篇文章是相关的.该cycle()函数似乎对这些事情很有用:

> tapply(dat, cycle(dat), mean)
        1         2         3         4         5         6         7         8         9 
295.33333 277.33333 298.00000 269.33333 276.66667 282.33333 314.00000 323.00000 313.66667 
       10        11        12 
310.33333 291.33333 296.66667

> aggregate(c(dat), list(month = cycle(dat)), mean) 
   month         x
1      1 295.33333
2      2 277.33333
3      3 298.00000
....
Run Code Online (Sandbox Code Playgroud)

我还缺少其他基本的东西吗?