Рассчитать среднемесячное значение ts объекта - PullRequest
8 голосов
/ 30 июня 2011

Учитывая ежемесячный объект 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)

Как рассчитать средние значения по месяцам? я хочу рассчитать среднее значение января, года 1 + января, года 2 + января, года 3 ... и т. д. а затем сможете провести сравнение с февральским ...

Один из подходов, о которых я подумал, состоял в том, чтобы превратить его в матрицу из 12 столбцов и использовать colMeans(), но я думаю, что есть лучший способ, который использует аспект time() объекта ts()?

colMeans(matrix(dat, ncol = 12, byrow = TRUE))

1 Ответ

9 голосов
/ 30 июня 2011

Хорошо, так что я должен дать Google еще один поиск, прежде чем прийти к 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
....

Что-нибудь еще фундаментальное, что я здесь упускаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...