Если мы перенесем время на 11 дней, то мы хотим, чтобы даты были такими же, как 26 февраля или ранее, поэтому пусть tt
будет таким вектором даты, а ok
будет логическим вектором, который ИСТИНА, если соответствующий tt
Элемент не позднее 26 февраля.В завершение агрегируйте Data[ok]
по состоянию на конец периода года.
tt <- time(Data) + 11
ok <- format(tt, "%m-%d") < "02-26"
aggregate(Data[ok], as.integer(as.yearmon(tt))[ok], mean)
, что дает:
1981 23.0
1982 382.5
1983 747.5
1984 1112.5
1985 1478.5
Если вы хотите сделать это без xts, тогда предположите, что наш ввод DF
, попробуйте это:
DF <- fortify.zoo(Data) # input
tt <- DF[, 1] + 11
ok <- format(tt, "%m-%d") < "02-26"
year <- as.numeric(format(tt, "%Y"))
aggregate(DF[ok, -1, drop = FALSE], list(year = year[ok]), mean)