我想在R中使用移动平均函数(rollmean)。示例数据:x<-seq(1,48,by=1)y<-c(rep(11,12), rep(12,12))z<-data.frame(x,y)我想为每个z[,"x"](即11和12)计算3天滞后的z[,"y"]移动平均值,并将其填充到(新)第三列,其中每个z[,"y"]的前两行由。 最佳答案 使用zoo例如使用data.table包:library(zoo)library(data.table)DT <- data.table(z)DT[, roll_x := rollmeanr(x, 3, fill = NA), y]当然,如果缺少一些值,最好使用rollapplyr:DT[, roll_x := rollapplyr(x, 3, mean, fill = NA), y]另一个更快的软件包是caTools:library(caTools)DT[, roll_x := runmean(x, 3, align = 'right', endrule = 'NA'), by = y]就数据帧而言,这也适用:transform(z, roll_x = ave(x, y, FUN = function(x) rollmeanr(x, 3, fill = NA)))关于r - 基于R中条件的滚动平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21604853/
10-13 08:34
查看更多