【发布时间】:2021-06-11 14:14:15
【问题描述】:
我正在尝试根据球员过去 3 场比赛中与同一手投手的表现来计算球员幻想点的移动平均值。
FP <- data.frame(player = c(rep("A",10), rep("B",10), rep("C",10)),
pitcher_hand = rep(c("R","L"),15),
fantasy_points = runif(30, min = 0, max = 25))
我知道我可以使用 (zoo) 中的 rollapplyr 来获取移动平均线,但在这里我需要基于另一列的条件移动平均线。例如,第 7 行的新列移动平均值将是第 5、3 和 1 行的平均幻想点数,因为它是针对同一个投手的。我试过了:
FP <- FP %>%
group_by(player) %>%
mutate(FP_L3 = rollapplyr(.,list(-(3:1)),function(x) mean(x[x[['pitcher_hand']]==pitcher_hand]),fill=NA))
如何做到这一点?我可以在一个大循环中执行此操作,遍历我的数据帧中的每一行并搜索正确的匹配项,但是我想避免这种情况,因为我的数据帧非常大。
【问题讨论】: