将月度列值聚合为季度值

Aggregating monthly column values into quarterly values

大家好,我是 R 的新手,非常感谢您的帮助。从 2004 年到 2013 年,我每个月都有以下数据(称为 "depressionaggregate"):

    Month   Year    DepressionCount
1   01      2004    285
2   02      2004    323
3   03      2004    267
4   04      2004    276
5   05      2004    312
6   06      2004    232
7   07      2004    228
8   08      2004    280
9   09      2004    277
10  10      2004    335
11  11      2004    273

我正在尝试创建一个新列,其中包含每个季度(即 2004 年第一季度、2004 年第二季度等)每年的汇总值。我试过使用聚合函数,但没有成功。希望你能帮我!此致

1) 如果 DF 是输入 data.frame 将其转换为具有 "yearmon" 索引的动物园对象 z然后将其聚合到 "yearqtr":

library(zoo)

toYearmon <- function(y, m) as.yearmon(paste(y, m, sep = "-"))
z <- read.zoo(DF, index = 2:1, FUN = toYearmon)
ag <- aggregate(z, as.yearqtr, sum)

给予:

> ag
2004 Q1 2004 Q2 2004 Q3 2004 Q4 
    875     820     785     608 

2) 这也行得通:

library(zoo)

yq <- as.yearqtr(as.yearmon(paste(DF$Year, DF$Month), "%Y %m"))
ta <- tapply(DF$DepressionCount, yq, sum)