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

如何用R语言计算体育球队的连胜/连败场次

R语言计算球队连胜/连败场次解决方案

要解决比赛结果切换时重置累加计数的问题,核心思路是先识别连续相同结果的分组,再在每个分组内计算连续场次,而非全局累加。以下提供两种实现方式:

方法一:使用dplyr(tidyverse生态)

library(dplyr)

# 初始化数据并命名列
data <- c(1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1) %>% 
  as.data.frame() %>% 
  rename(result = ".")  # 将默认列名改为result

# 计算连胜/连败场次
data <- data %>%
  # 生成连续相同结果的分组ID:结果变化时分组ID递增
  mutate(group_id = cumsum(c(1, diff(result) != 0))) %>%
  # 按分组ID分组,计算组内行号(即当前连续场次)
  group_by(group_id) %>%
  mutate(streak = row_number()) %>%
  ungroup() %>%
  # 标记连胜/连败类型
  mutate(streak_type = ifelse(result == 1, "连胜", "连败"))

# 查看结果
print(data)

方法二:Base R实现(无需额外包)

# 初始化数据
data <- data.frame(result = c(1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1))

# 生成连续相同结果的分组ID
group_id <- c(1, cumsum(diff(data$result) != 0))
# 按分组计算连续场次
data$streak <- ave(rep(1, nrow(data)), group_id, FUN = cumsum)
# 标记连胜/连败类型
data$streak_type <- ifelse(data$result == 1, "连胜", "连败")

# 查看结果
print(data)

结果说明

两种方法都会生成符合需求的结果:当比赛结果从胜(1)转负(0)或反之,streak列会自动重置为1,依次累加当前连续场次,最终可以清晰看到每场比赛后的球队连续状态。

内容的提问来源于stack exchange,提问作者AENT711

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:10:19