按组创建 7 天滚动平均值

Create a 7-day rolling mean by Group

我想为训练组中的每位运动员计算的一年中的每日体育训练负荷创建 7 天滚动平均值。

数据集名为'daily.load'。向量是:'Date'、'Name'、'Total.Load'

理想的最终结果是 'Total.Load' 的 7 天滚动平均值作为 'daily.load' 数据集中称为 'Rolling.Average' 的第四个向量。

我正在尝试使用 rollmean 执行此操作,但在获取由运动员生成滚动平均值的函数时,我遇到了困难。

如有任何帮助,我们将不胜感激。

马特

data.table中有一个by参数,所以运动员计算滚动平均值应该没有问题。下面是一个可重现的例子,我用 rollmean 计算了滚动平均值。另请注意 RcppRoll::roll_mean 可能比 zoo::rollmean 快得多。

# load packages
require(data.table)
require(zoo)
# create data
Ndays <- 100
Nnames <- 5
daily.load <- data.table(Date = rep(Sys.Date() - seq.int(Ndays, 1), times = Nnames), 
                         Name = rep(LETTERS[seq(Nnames)], each=Ndays), 
                         Total.Load = rnorm(Ndays*Nnames, 100, 5))
setkey(daily.load, "Name", "Date")
# calculate rolling average by Name
daily.load[, Rolling.Average := rollmean(Total.Load, 7, fill = NA), by = Name]

谢谢影子。确切的工作代码是:

setDT(daily.load)

daily.load[ Rolling.Average := rollmean(Total.Load, 7, fill = NA, align="right"), by = Name]

align="right" 与 align="centre" 是一个很好的选择。还记得R新手要区分自己是数据table还是数据框