按组创建7天滚动平均值

时间:2015-03-16 01:17:17

标签: r function data.table moving-average

我希望为训练组中每名运动员计算一年内每日体能训练负荷的7天滚动平均值。

数据集名为“daily.load'”。这些载体是:' Date',' Name',' Total.Load'

理想的最终结果将是对于Total.Load'作为第四个名为“Rolling.Average”的矢量'在'daily.load'数据集。

我试图用rollmean来做这件事,但是当我想让运动员产生滚动意义的功能时我会陷入困境。

任何帮助都会非常感激。

马特

2 个答案:

答案 0 :(得分:1)

by中有一个data.table参数,因此运动员计算滚动平均值应该不是问题。下面是一个可重现的例子,我用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]

答案 1 :(得分:0)

谢谢你的影子。确切的代码是:

setDT(daily.load)

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

对齐=&#34;对&#34; vs. align =&#34; center&#34;是一个很好的选择。还要记住R新手要区分你是否有数据表或数据框。