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

如何用rle函数计算球员连续得分的总分数

解决方案:统计球员连续得分总和

要实现统计每位球员为其球队取得的连续得分总和,你可以通过识别连续得分段并分组求和来完成,以下是基于dplyr的简洁实现:

方法一:用cumsum标记连续得分段

library(dplyr)

df %>%
  # 先按比赛+球队分组,确保仅在同一比赛的同一球队内判断连续得分
  group_by(gameid, possession) %>%
  # 标记当前行是否切换了得分球员,生成连续得分段的ID
  mutate(
    # 第一行默认与自身相同,不会触发切换
    player_switch = player_fg != lag(player_fg, default = first(player_fg)),
    # 累加切换次数,得到每个连续段的唯一ID
    streak_id = cumsum(player_switch)
  ) %>%
  # 按连续段分组,计算该段的总得分
  group_by(gameid, possession, streak_id, player_fg, .add = TRUE) %>%
  mutate(streak_total_pts = sum(pts)) %>%
  ungroup()

方法二:用rle直接生成连续段ID

如果你更习惯用rle函数,也可以直接利用其结果生成分组ID:

library(dplyr)

df %>%
  group_by(gameid, possession) %>%
  # 用rle的结果重复生成连续段ID
  mutate(streak_id = rep(seq_along(rle(player_fg)$values), rle(player_fg)$lengths)) %>%
  # 按连续段计算总得分
  group_by(gameid, possession, streak_id, player_fg, .add = TRUE) %>%
  mutate(streak_total_pts = sum(pts)) %>%
  ungroup()

结果说明

运行上述代码后,新列streak_total_pts会显示当前行所在连续得分段的总得分:

  • D. Rodman的连续2次得分总和为2+1=3,对应两行的streak_total_pts均为3
  • S. Pippen的前3次连续得分总和为2+2+2=6,最后一次单独得分为2,对应行的streak_total_pts分别为6和2
  • P. Ellison的连续2次得分总和为2+1=3,对应两行的streak_total_pts均为3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:35:33