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

如何筛选连续3赛季参赛的球员数据及统计项逐年递增记录

筛选连续3+赛季参赛且EV.GF.逐年递增的球员记录

第一步:筛选拥有连续3个及以上赛季参赛记录的球员

先按球员和赛季排序,再通过计算赛季间隔标记连续赛季分组,最终筛选出包含连续3+赛季的球员记录:

library(dplyr)

# 排序并标记连续赛季分组
pick224_structure <- pick224_structure %>%
  arrange(Player, Season) %>%
  group_by(Player) %>%
  # 转换赛季为可计算的数值(示例:"2020-21"格式转成2020,根据你的Season格式调整)
  mutate(season_num = as.integer(substr(Season, 1, 4)),
         # 计算当前赛季与上一赛季的间隔,1代表连续
         season_gap = season_num - lag(season_num, default = first(season_num)),
         # 标记连续赛季的分组ID
         consecutive_group = data.table::rleid(season_gap),
         # 统计每个连续分组的赛季数量
         group_season_count = n()) %>%
  ungroup()

# 筛选出包含连续3+赛季的所有记录
consecutive_players_data <- pick224_structure %>%
  group_by(Player, consecutive_group) %>%
  filter(n() >= 3) %>%
  ungroup()

说明:

  • 若你的Season格式不是"YYYY-YY",需修改season_num的转换逻辑,比如本身是整数赛季可直接跳过转换
  • data.table::rleid用于给连续的赛季段分配相同分组ID,方便统计每组长度

第二步:筛选EV.GF.逐年递增的连续赛季记录

基于第一步的结果,检查每个连续赛季组内的EV.GF.是否满足逐年递增:

# 处理EV.GF.格式(如果是百分比字符串,先转成数值)
consecutive_players_data <- consecutive_players_data %>%
  mutate(EV.GF. = as.numeric(sub("%", "", EV.GF.))) # 若已是数值可跳过

# 筛选EV.GF.逐年递增的记录
increasing_evgf_data <- consecutive_players_data %>%
  group_by(Player, consecutive_group) %>%
  # 标记当前赛季EV.GF.是否大于上一赛季
  mutate(is_increasing = EV.GF. > lag(EV.GF., default = -Inf),
         # 确认整个连续组内所有赛季都满足递增
         all_increasing = all(is_increasing, na.rm = TRUE)) %>%
  filter(all_increasing) %>%
  ungroup()

说明:

  • 若EV.GF.已是数值类型,跳过格式转换步骤
  • na.rm = TRUE用于处理可能存在的缺失值,避免筛选失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:15:32