如何在R中每年申请一项功能?

时间:2015-04-16 10:24:22

标签: r

就像我有一个动物园对象,我想要做的是分别对每年应用一定的数据操作/功能。

有没有方便的方法来完成任务?

示例数据:

data <- zoo(rnorm(1000),as.Date("1973-02-01") + c(1:1000) - 1)

并且,需要计算每年的平均值。

谢谢,

2 个答案:

答案 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