每月汇总数据

时间:2017-08-31 21:42:20

标签: r datetime aggregate aggregate-functions

我在R中有以下数据:

           date          category1  category2   category 3  category 4
1    2012-04-01            7496.00   77288.37  224099.15     700050.04
2    2012-04-02           24541.00   59103.94  138408.65     625006.84
3    2012-04-03            1249.00   15951.50  574170.30     249390.53
4    2012-04-04            5205.00   10866.00       0.00     358703.88
5    2012-04-05           10398.00       0.00  119745.17     270585.46

并使用以下脚本按月汇总数据:

data <- as.xts(data$category1,order.by=as.Date(data$date))
monthly <- apply.monthly(data,sum)
monthly

问题:我如何将as.xts(...)应用于所有列,而不是为每个类别重复每个步骤,然后加入每个月度数据框?我试过了

as.xts(c("data$category1","data$category1"),order.by=as.Date(data$date))

哪个不起作用。

另外:是否有更好的方式按月汇总?

2 个答案:

答案 0 :(得分:0)

使用xts代替as.xts

apply.monthly(xts(df[ -1], order.by = as.Date(df$date)), mean)

然而,这似乎只适用于均值,而不是总和。您始终可以使用sapply来遍历列

 sapply(colnames(data[, -1]), function(x) apply.monthly(as.xts(data[,x],
                                                       order.by=as.Date(data$date)),sum))

答案 1 :(得分:0)

您可以使用HydroTSM包中的daily2monthly功能。它可以处理不仅仅是xts的参数,包括多个列。 Fun可以是summean

monthly <- daily2monthly(data, FUN=sum, na.rm=TRUE)