Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 寻找基于年数的加权平均数_R_Statistics_Average_Weighted - Fatal编程技术网

R 寻找基于年数的加权平均数

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

我想创建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  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的列一样