我想使用在實施例R.數據移動平均函數(rollmean
)條件:輥的意思是基於R中
x<-seq(1,48,by=1)
y<-c(rep(11,12), rep(12,12))
z<-data.frame(x,y)
欲計算與3天滯後移動z[,"x"]
的平均用於每個z[,"y"]
(即11 & 12)並將它們填充到(新)第三列,其中每個z[,"y"]
的前兩行由NAs
指定。
我想使用在實施例R.數據移動平均函數(rollmean
)條件:輥的意思是基於R中
x<-seq(1,48,by=1)
y<-c(rep(11,12), rep(12,12))
z<-data.frame(x,y)
欲計算與3天滯後移動z[,"x"]
的平均用於每個z[,"y"]
(即11 & 12)並將它們填充到(新)第三列,其中每個z[,"y"]
的前兩行由NAs
指定。
使用data.table
包使用zoo
例如:
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)))
你有什麼試過?這可以幫助你http://stackoverflow.com/questions/17765001/using-rollmean-when-there-are-missing-values-na – Llopis
任何理由使用'data.table'而不是數據框?爲什麼'y'比'x'短?我很確定你可以用'rollapply(x,widths = {與y做什麼},...)在一行中做到這一點'' –