就像我有一个动物园对象,我想要做的是分别对每年应用一定的数据操作/功能。
有没有方便的方法来完成任务?
示例数据:
data <- zoo(rnorm(1000),as.Date("1973-02-01") + c(1:1000) - 1)
并且,需要计算每年的平均值。
谢谢,
答案 0 :(得分:4)
您可以对动物园系列使用aggregate()
方法。具体的聚合函数取决于您用于时间索引的类(例如,yearmon或Date等)。使用一些使用yearmon的人工数据:
set.seed(1)
x <- rnorm(36) + 1:36
z_yearmon <- zoo(x, as.yearmon(2000) + 1:36/12)
aggregate(z_yearmon, function(x) floor(as.numeric(x)), mean)
## 2000 2001 2002 2003
## 6.257619 17.729362 29.258357 35.585005
您可以插入任何其他自定义功能,而不是mean()
。或者对于日期索引:
z_date <- zoo(x, as.Date(time(z_yearmon)))
aggregate(z_yearmon, function(x) 1900 + as.POSIXlt(x)$year, mean)
## 2000 2001 2002 2003
## 6.257619 17.729362 29.258357 35.585005
答案 1 :(得分:0)
您可以使用 apply.yearly(x, FUN, ...)
库中的 xts
函数。它也适用于动物园对象。
apply.yearly(data, mean)
输出:
1973-12-31 1974-12-31 1975-10-28
-0.01142834 0.02000210 0.02259480