You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 Villa2
Arsenal1
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:24:04