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

如何为篮球赛事数据集按分组条件创建prev_shot列?

解决方案:创建篮球赛事数据的prev_shot列

核心思路

  • 按**赛事(game)和球员(player)**分组,仅在同赛事同球员的范围内追溯上一次投篮记录
  • 组内第一行(球员本场首次投篮)的prev_shot固定赋值为1;其余行取同组内上一行的shot值

dplyr 实现方法

借助dplyr的分组和滞后函数,代码简洁直观:

library(dplyr)

dat_ <- dat_ %>%
  group_by(game, player) %>%
  mutate(prev_shot = lag(shot, default = 1)) %>%
  ungroup()
  • group_by(game, player):限定仅在同赛事同球员的组内处理数据
  • lag(shot, default = 1):lag()函数自动提取当前行的前一行shot值,组内首行无前置数据时,用default=1填充
  • ungroup():取消分组,恢复普通数据框结构

Base R 实现方法

无需额外包,用ave()函数实现分组逻辑:

dat_$prev_shot <- ave(dat_$shot, dat_$game, dat_$player, 
                      FUN = function(x) c(1, x[-length(x)]))
  • ave()按game和player对shot列分组处理
  • 自定义函数function(x) c(1, x[-length(x)]):给每个分组的投篮序列开头添加1(对应首次投篮),后续元素取分组内前一个位置的shot值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:12:13