R 寻找基于年数的加权平均数
我想创建2017年至2019年棒球统计战的加权平均值。 平均数如下: 2019: 57.14% 2018: 28.57% 2017年:14.29% 然而,一些球员只在2018年和2019年打球,一些球员在2019年和2017年打球。 如果他们只踢了两年,那将是67/33,而只有一年显然是100% 我想知道是否有一个简单的方法来做到这一点。 我的数据集如下所示R 寻找基于年数的加权平均数,r,statistics,average,weighted,R,Statistics,Average,Weighted,我想创建2017年至2019年棒球统计战的加权平均值。 平均数如下: 2019: 57.14% 2018: 28.57% 2017年:14.29% 然而,一些球员只在2018年和2019年打球,一些球员在2019年和2017年打球。 如果他们只踢了两年,那将是67/33,而只有一年显然是100% 我想知道是否有一个简单的方法来做到这一点。 我的数据集如下所示 Name Season G PA HR BB_pct K_pct ISO wOBA wRC_plus
Name Season G PA HR BB_pct K_pct ISO wOBA wRC_plus Def WAR
337 A.J. Pollock 2017 112 466 14 7.5 15.2 0.205 0.340 103 2.6 2.2
357 A.J. Pollock 2018 113 460 21 6.7 21.7 0.228 0.338 111 0.9 2.6
191 Aaron Altherr 2017 107 412 19 7.8 25.2 0.245 0.359 120 -7.9 1.4
162 Aaron Hicks 2017 88 361 15 14.1 18.6 0.209 0.363 128 6.4 3.4
186 Aaron Hicks 2018 137 581 27 15.5 19.1 0.219 0.360 129 2.3 5.0
464 Aaron Hicks 2019 59 255 12 12.2 28.2 0.208 0.325 102 1.3 1.1
每个人的年数也不尽相同,但我想知道是否有人有办法根据他们玩的年数来进行加权平均。如果有意义的话,我也不想要任何只有2017年才能完成的任务。我想,有一种简单的方法可以完成你的任务。不幸的是,我的方法有点复杂。我使用的是
dplyr
和purr
首先,我将这些权重放入一个列表:
1年%
解组()%>%
组分割(n)->我的列表
现在,我定义了一个使用权重计算平均值的函数:
WAR\u平均值%
分组单位(名称)%>%
变异(WAR_平均值=总和(WAR*权重[[i]]))
最后,我在my\u list
上应用函数WAR\u average
,并过滤/选择数据:
我的列表%>%
seq_沿()%>%
lappy(平均值)%>%#应用函数
reduce(rbind)%>%#将数据帧绑定到一个df中
筛选(赛季!=2017 | n!=1)%>%#筛选仅在2017年有效的球员
选择(姓名、战争平均值)%>%#选择球员和战争平均值
distinct()#删除重复项
这整个过程又回来了
#一个tible:2x2
#分组:名称[2]
平均值
1 A.J.波洛克2.33
2 Aaron Hicks 4.24
您的预期输出应该是什么样子的?就像另一个带有加权WAR的列一样