我在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))
哪个不起作用。
另外:是否有更好的方式按月汇总?
答案 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
可以是sum
或mean
。
monthly <- daily2monthly(data, FUN=sum, na.rm=TRUE)