如何按GameID对足球赛事统计DataFrame的对应字段求和?
解决方案:按GameID分组汇总赛事数据
方法一:使用dplyr包(推荐,语法更直观)
如果还没安装dplyr,先执行安装命令:
install.packages("dplyr")
然后通过分组+汇总实现需求:
library(dplyr) # 替换your_data_frame为你的实际DataFrame名称 summary_df <- your_data_frame %>% group_by(GameID, leagueID) %>% # 按赛事编号和联赛编号分组(同一赛事的联赛编号一致) summarise( total_goals = sum(goals), # 计算单场总进球数 total_fouls = sum(fouls), # 计算单场总犯规数 .groups = "drop" # 取消分组状态,返回普通DataFrame )
方法二:使用base R的aggregate函数
无需额外安装包,直接用基础函数实现:
# 替换your_data_frame为你的实际DataFrame名称 summary_df <- aggregate( cbind(goals, fouls) ~ GameID + leagueID, data = your_data_frame, FUN = sum ) # 可选:重命名列名让结果更清晰 colnames(summary_df) <- c("GameID", "leagueID", "total_goals", "total_fouls")
关键说明
你之前用rowSums()无效的原因是:rowSums()是对单行内的多个列求和,而你需要的是对同一GameID分组下的多行同列值求和,分组聚合才是正确的处理逻辑。
内容的提问来源于stack exchange,提问作者SonnyJMoore
相关产品推荐
相关产品推荐

