基于R中的条件,在许多列上进行迭代减法

用户名

我的数据包含足球比赛结果的统计数据,包含12806个观察值(比赛结果)和34个关键绩效指标。

我的data.frame的一个(小)示例如下:

head(Test)
  MatchID Outcome Var1 Var2 Var3 Var4 Var5
1      30    Loss    0   10    0   10    0
2      30     Win    6   13    6   13    6
3      31    Loss    8   12    3    6    3
4      31     Win   29   40    9   19    3
5      32    Loss    7   26    7   26    6
6      32     Win   11   20   11   20    9

对于每个唯一的“比赛ID”,我希望从获胜(Outcome ==“ Win”)团队中扣除每项失利(Outcome ==“ Loss”)关键绩效指标。我的data.set并不总是由Loss,Win ,损失,胜利,因此可能无法连续完成此操作。

我已经尝试使用dplyr进行以下操作:

 Differences <- Test %>% 
   group_by(MatchID) %>% 
   summarise_at( .vars = names(.)[3:7], ((Outcome == "Win") - (Outcome == "Loss")))

但是担心我使用了错误的方法,因为我收到以下错误: Error in inherits(x, "fun_list") : object 'Outcome' not found

我的预期结果将是:

head(AnticipatedOutcome)
  MatchID Var1 Var2 Var3 Var4 Var5
1      30  6    3    6    3    6
3      31 21   28    6   13    0
5      32  4   -6    4   -6    3

使用dplyr是否可以实现?

阿克伦

两个逻辑向量之差的长度相同。我们需要将“结果”为“变量”列的子集"Win",取其中sum的值,然后从“结果”为的列中减去"Loss"

library(tidyverse)
Test %>%
    group_by(MatchID) %>%
    summarise_at(vars(starts_with('Var')),
              funs(sum(.[Outcome == "Win"]) - sum(.[Outcome == "Loss"])))
# A tibble: 3 x 6
#  MatchID  Var1  Var2  Var3  Var4  Var5
#    <int> <int> <int> <int> <int> <int>
#1      30     6     3     6     3     6
#2      31    21    28     6    13     0
#3      32     4    -6     4    -6     3

或另一种选择是将其转换gather为“长”格式,按相差的方式将其分组,sum然后将spread其转换为“宽”格式

Test %>% 
  gather(key, val, Var1:Var5) %>% 
  group_by(MatchID, key) %>%
  summarise(val = sum(val[Outcome == "Win"]) - sum(val[Outcome == "Loss"])) %>%
  spread(key, val)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在数据框中的列上进行迭代

在基于Spark Dataframe的API中的多个列上进行过滤

使用R基于数据帧中因素的迭代减法

如何在Pandas数据框中的列上进行迭代和执行操作

如何在数据框中的列上进行迭代以更改其值

如何在许多行中的相同ID的SQL Server中的表上进行迭代?

在另一个矩阵的每一列上进行 Numpy 矩阵减法

在MATLAB上进行GMT减法

如何在Pandas.DataFrame中的列上进行迭代并将函数的结果附加到同一行?

Oracle-在多个列上进行条件合并

在R中的数据框的选定列上进行操作,而不会影响其他列

在R中基于多个组的减法

基于R中的值进行迭代和分配的函数

R中数据帧中的条件减法

基于子文档中的多个条件在MongoDB上进行聚合查询

Excel VBA:在命名表中的特定列上进行 vLookup 并替换与多个条件和通配符匹配的值

在所有列上进行迭代或循环(类似于对变量进行计数,求和或减去的函数)

在Python中的嵌套列表上进行迭代/双重迭代

R数据框中的条件减法

如何在Slick中的Option [Boolean]列上进行过滤

在Django中带注释的列上进行过滤

在一个表中的列上进行排名

如何在Vertica中的varchar列上进行范围分区

如何在熊猫数据框的列上进行迭代以运行回归

在数据框列上进行迭代时,如何生成多个单独的列表

如何在Pandas中的DataFrame中的行上进行迭代

R:基于dyplr中的多个条件进行汇总

如何基于R中的条件组合对数据进行子集

基于 R 中的条件对嵌套列表进行子集化