У меня есть объект временного ряда тс. Я упомянул весь объект здесь. Имеются данные за период с января 2013 года по декабрь 2017 года за все годы. Я пытаюсь найти среднесуточное значение , чтобы это значение делилось на количество дней в месяце.
Ожидаемый результат
Первое значение для января 2013 года в тс - 23770, я хочу, чтобы оно было 23770/31, где 31 - количество дней в январе, второе значение для февраля 2013 года - 23482. Я хочу, чтобы значение было 23482/28, поскольку 28 было количество дней в феврале 2013 года и т. д.
До сих пор пробовали:
Я знаю, monthdays()
может это сделать. Что-то вроде ts/monthdays()
.Monthdays () возвращает количество дней в месяце. Я не могу реализовать это здесь. Прочитайте об этом tapply где-нибудь, но он не дает мне желаемого результата, так как мне нужны значения, соответствующие каждой комбинации года и месяца.
ts
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2013 23770 23482 23601 22889 23401 24240 23873 23647 23378 23871 22624 23496
2014 26765 27619 26341 27320 27389 27418 26874 27005 27538 26324 27267 27583
2015 28354 27452 28336 28998 28595 28338 27806 28660 27226 28317 28666 28574
2016 30209 30659 31554 30248 30358 31091 30389 30247 31227 31839 30602 30609
2017 32180 32203 31639 31784 32375 30856 31863 32827 32506 31702 31681 32176
> cycle(ts_actual_group2)
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2013 1 2 3 4 5 6 7 8 9 10 11 12
2014 1 2 3 4 5 6 7 8 9 10 11 12
2015 1 2 3 4 5 6 7 8 9 10 11 12
2016 1 2 3 4 5 6 7 8 9 10 11 12
2017 1 2 3 4 5 6 7 8 9 10 11 12
Использование tapply, так как я прочитал его, но это не дает желаемого результата
tapply(ts_actual_group2, cycle(ts_actual_group2), mean)
1 2 3 4 5 6 7 8 9 10 11 12
28255.6 28283.0 28294.2 28247.8 28423.6 28388.6 28161.0 28477.2 28375.0 28410.6 28168.0 28487.6