我希望为训练组中每名运动员计算一年内每日体能训练负荷的7天滚动平均值。
数据集名为“daily.load'”。这些载体是:' Date',' Name',' Total.Load'
理想的最终结果将是对于Total.Load'作为第四个名为“Rolling.Average”的矢量'在'daily.load'数据集。
我试图用rollmean来做这件事,但是当我想让运动员产生滚动意义的功能时我会陷入困境。
任何帮助都会非常感激。
马特
答案 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新手要区分你是否有数据表或数据框。