使用多个条件的R中的聚合函数

时间:2018-12-14 17:48:51

标签: r aggregate criteria

我一直在尝试使用此公式一段时间,因为我试图获取每个足球队在数据集中得分的进球数。我能够找出他们在家或客场进球数。但是我很难将两者结合在一起。

这是我完成的代码的示例。我可以将FTHG(全时主场进球)列中得分的目标加起来,但目前仅基于主队进球。

goalsScored <- aggregate(FTHG ~ HomeTeam, matchData, sum)

我知道我也必须添加客场进球,但是我需要它,因此它只计算特定球队得分远的进球。在这里,这是主队每场比赛的主场进球和客场进球,而不是对应于他们在家还是客场比赛的数量。

goalsScored <- aggregate(FTHG + FTAG ~ HomeTeam, matchData, sum)

这是一个示例表(matchData):

---------------------------------
HomeTeam | AwayTeam | FTHG | FTAG
TeamA    |  TeamB   |   3  |  1
TeamC    |  TeamD   |   1  |  0
TeamB    |  TeamA   |   2  |  2
TeamD    |  TeamC   |   0  |  3

输出应如下所示(goalsScored):

---------------------------------
Team  | GoalsScored
TeamA |      5
TeamB |      3
TeamC |      4
TeamD |      0

1 个答案:

答案 0 :(得分:0)

使用您的示例:

df<-data.frame(HomeTeam = c("TeamA","TeamC","TeamB","TeamD"),
               AwayTeam = c("TeamB","TeamD","TeamA","TeamC"),
               FTHG = c(3,1,2,0),
               FTAG = c(1,0,2,3))

您可以使用Base R来执行此操作,但是dplyr使其更易于逐步执行。为每个team列建立索引,然后使用rbind按行将它们绑定起来,就可以对它们进行汇总。您可以根据需要将其另存为单独的数据框。

这是您的输出:

library(dplyr)

rbind(data.frame(Team = df[,1], Goals_Scored = df[,3]),
      data.frame(Team = df[,2], Goals_Scored = df[,4])) %>%
  group_by(Team) %>% 
  summarize(Goals_Scored = sum(Goals_Scored))

Team  | Goals Scored
TeamA |      5
TeamB |      3
TeamC |      4
TeamD |      0