问题描述
我试图根据玩家过去 3 场比赛对同一手投手的表现,计算他们的幻想点数的移动平均值。
FP <- data.frame(player = c(rep("A",10),rep("B",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))
这是怎么做到的?我可以在一个大循环中执行此操作,遍历数据帧中的每一行并搜索正确的匹配项,但是我想避免这种情况,因为我的数据帧非常大。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)