假设您有以下数据框:
我希望能够计算每一行中个人的Pts平均RollMean,但仅包括最早日期和当前行日期之间的条目。
例如:
set.seed(100)
Pts <- floor(runif(20, 0, 10))
Individual <- c(rep("Adam",5), rep("Ben",5), rep("Charlie",5), rep("Daisy",5))
Date <- c(rep(seq(as.Date("2015-01-01"), as.Date("2015-01-05"), "days"), 4))
RollMean <- rep(NA,20)
df <- data.frame(Pts, Individual, Date, RollMean)
我希望能够计算每一行中个人的Pts平均RollMean,但仅包括最早日期和当前行日期之间的条目。
例如:
df$RollMean[3] = (5+2+3)/3
df$RollMean[4] = (5+2+3+0)/4
df$RollMean[7] = (8+4)/2
我尝试使用TTR
包中的SMA()
等函数,然后使用ave
按组进行排序,例如:
df$RollMean <- ave(df$Pts, df$Individual, FUN= function(x) SMA(x, n))
但是我需要事先指定 n
,这取决于正在处理的行R。
有什么代码可以生成我想要的滚动平均值吗?