Как рассчитать средний год - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть 20-летний месячный временной ряд XTS

Янв 1990 г. 12,3

Фев 1990 г. 45,6

Мар 1990 г. 78,9

..

январь 1991 34,5

..

декабрь 2009 г. 89,0

Я хотел бы получить средний (12-месячный) год или

Jan xx

Feb yy

...

Dec kk

где xx - среднее значение каждого января, yy каждого февраля и т. Д.вкл.

Я пытался применить apply.yearly и lapply, но они возвращают 1 значение, то есть общее среднее значение за 20 лет

У вас есть какие-либо предложения?Я ценю это.

1 Ответ

0 голосов
/ 23 апреля 2019

Пакет lubridate может быть полезен для вас.Я бы использовал функции year() и month() в сочетании с aggregate():

library(xts)
library(lubridate)

#set up some sample data
dates = seq(as.Date('2000/01/01'), as.Date('2005/01/01'), by="month")
df = data.frame(rand1 = runif(length(dates)), rand2 = runif(length(dates)))
my_xts = xts(df, dates) 

#get the mean by year
aggregate(my_xts$rand1, by=year(index(my_xts)), FUN=mean)

Это выдает что-то вроде:

2000 0.5947939
2001 0.4968154
2002 0.4941752
2003 0.5291211
2004 0.6631564

Чтобы найти среднее значение для каждого месяца выможет сделать:

#get the mean by month
aggregate(my_xts$rand1, by=month(index(my_xts)), FUN=mean)

, который выдаст что-то вроде

1  0.5560279
2  0.6352220
3  0.3308571
4  0.6709439
5  0.6698147
6  0.7483192
7  0.5147294
8  0.3724472
9  0.3266859
10 0.5331233
11 0.5490693
12 0.4642588
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...