R 移动平均和移动季度数据

R 移动平均和移动季度数据,r,moving-average,R,Moving Average,我有每日时间序列数据,希望构建每日移动平均值并创建季度数据框架。例如,(示例数据的)第一个数据集应包括一月、二月和三月的每日数据,而第二个系列应为二月、三月和四月。同样,最后一组数据应为10月、11月和12月的数据。我希望对示例数据中的变量“tmpd、pm10median和so2median”执行此操作。我怎样才能做到这一点 library(gamair) data(chicago) chicago$date<-seq(from=as.Date("1987-01-01"), to=as

我有每日时间序列数据,希望构建每日移动平均值并创建季度数据框架。例如,(示例数据的)第一个数据集应包括一月、二月和三月的每日数据,而第二个系列应为二月、三月和四月。同样,最后一组数据应为10月、11月和12月的数据。我希望对示例数据中的变量“tmpd、pm10median和so2median”执行此操作。我怎样才能做到这一点

library(gamair) 
data(chicago) 
chicago$date<-seq(from=as.Date("1987-01-01"), to=as.Date("2000-12-31"),length=5114)
data<- chicago[,c("date","tmpd", "pm10median", "so2median" )]
库(gamair)
数据(芝加哥)

芝加哥$date使用
xts
包,您可以这样做

library(xts)
dat.ts <- xts(x=data[,-1],                   ## create an xts object 
              order.by=as.Date(data[,1]))    ## coerce the index to date
dat.quart <- apply.quarterly(dat.ts,mean)    ## apply for each quarter
更新

看来OP希望按季度划分移动平均线系列

dat.ts <- xts(x=data[,-1],                   ## create an xts object 
              order.by=as.Date(data[,1]))    ## coerce the index to date
dat.m <- rollmean(dat.ts,k=2)                ## compute the MA
ep <- endpoints(dat.m, "quarters")           ## create an index
## this split the seriers by quarter
xx <- sapply(1:(length(ep) - 1), function(y) { 
  dat.m[(ep[y] + 1):ep[y + 1]]
})

dat.ts老实说,解决这个问题没有什么用处。我试着用这个来创建移动平均线:library(zoo)data$rollmean,谢谢。但我希望的是连续三个月的每日平均值,而不是季度平均值。本质上,我希望有10个独立的1-3月、2-4月、3-5月等的日数据,直到10-12月。只是想了解一下,在dat.ts(1-1月开始)中,1-3月的值是多少?我将得到90个值(与三个月相对应的日平均值)。@user1754610 90个值..value1=平均值(…?),value2=平均值(…?)?你能开发吗?作为一个例子,我想为第一天到第五天的tmpd获取的新值是:NA 32.25、33.00、31.00 30.50、36.00、36.00、37.25。这是连续2天tmpd运行平均值的结果。
dat.ts <- xts(x=data[,-1],                   ## create an xts object 
              order.by=as.Date(data[,1]))    ## coerce the index to date
dat.m <- rollmean(dat.ts,k=2)                ## compute the MA
ep <- endpoints(dat.m, "quarters")           ## create an index
## this split the seriers by quarter
xx <- sapply(1:(length(ep) - 1), function(y) { 
  dat.m[(ep[y] + 1):ep[y + 1]]
})