R:将“每日”时间序列转换为每月

问题描述

我正在使用被称为“每日”的时间序列数据(6000个观测值,超过7000天)。但是,不一定每天都要进行测量。有时,同一天可能会进行多次测量。这就是为什么我认为最好“每月”而不是“每天”分析此数据。

我创建了一些虚拟数据来表示我的时间序列:

library(xts)

date_decision_made = seq(as.Date("2014/1/1"),as.Date("2016/1/1"),by="day")

date_decision_made <- format(as.Date(date_decision_made),"%Y/%m/%d")

property_damages_in_dollars <- rnorm(731,100,10)

final_data <- data.frame(date_decision_made,property_damages_in_dollars)

我正在尝试按照此处的说明进行操作:Getting a monthly time series from weekly data

y.mon  <- aggregate(final_data,by = format(date_decision_made,format="%Y/%m/%d"),FUN=sum)

但是这段代码给我一个错误

Error in aggregate.data.frame(final_data,: 
  'by' must be a list

有人知道我在做什么错吗?

谢谢

解决方法

OP问题的可能解决方案可以基于:

#Code
y.mon<-aggregate(property_damages_in_dollars~format(as.Date(date_decision_made),format="%Y/%m"),data=final_data,FUN=sum)

围绕format()选项可以探索更多的变种。