使用多个条件在 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
我一直在研究这个公式一段时间,因为我试图在我的数据集中获得每支足球队的进球数。我能够找出他们在主场或客场进了多少球。但我正在努力将两者结合起来。
这是我完成的代码示例。我可以将 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