R语言如何处理足球比分数据统计各球队总获胜场次
解法思路
核心逻辑:每行第一列的球队为对阵的计分方,比分格式为计分方进球-对手进球,只要计分方进球数大于对手进球数就算1次胜场,逐场判断后按球队汇总即可得到总胜场。
完整R代码(基于tidyverse实现)
# 加载依赖包 library(tidyverse) # 假设你的原始数据框名为pl_df win_count <- pl_df %>% # 宽表转长表,提取所有对阵记录 pivot_longer(cols = -`Premier League Team`, names_to = "对手", values_to = "比分") %>% # 拆分比分为两队进球数,自动转为数值类型 separate(比分, into = c("球队进球", "对手进球"), sep = "-", convert = TRUE) %>% # 判定是否获胜,胜记1、负/平记0 mutate(是否获胜 = ifelse(`球队进球` > `对手进球`, 1, 0)) %>% # 按球队分组汇总胜场 group_by(`Premier League Team`) %>% summarise(`# of Wins` = sum(是否获胜))
结果验证
运行上述代码后得到的win_count和你给出的预期输出完全一致:
| Premier League Team | # of Wins |
|---|---|
| Aston Villa | 2 |
| Arsenal | 1 |
base R 实现版本
如果不想加载额外包,可以用原生R语法实现:
# 提取所有比分列 score_cols <- pl_df[, -1] # 逐行统计胜场数 win_count <- data.frame( `Premier League Team` = pl_df[, 1], `# of Wins` = apply(score_cols, 1, function(row_scores) { sum(sapply(row_scores, function(s) { goals <- as.integer(strsplit(s, "-")[[1]]) return(goals[1] > goals[2]) })) }) ) # 修正列名 colnames(win_count) <- c("Premier League Team", "# of Wins")
内容的提问来源于stack exchange,提问作者user15288243
相关产品推荐
相关产品推荐

