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

Aggregate Function in R using Multiple Criteria

我一直在研究这个公式一段时间,因为我试图在我的数据集中获得每支足球队的进球数。我能够找出他们在主场或客场进了多少球。但我正在努力将两者结合起来。

这是我完成的代码示例。我可以将 FTHG(全职主场进球)栏中的进球数相加,但目前它仅基于主队进球数。

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

我知道我还必须加上客场进球数,但我需要它,所以它只计算特定球队客场进球数。这里是将主队每场比赛的主客场进球数相加,而不是主客场比赛的总进球数。

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

这是一个例子table (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

使用你的例子:

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