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

如何从NBA赛事日志的比赛描述中提取英尺单位的投篮距离

R语言提取NBA赛事日志中投篮距离的解决方案

问题原因

你之前使用parse_number得到错误结果的核心原因是:该函数会默认提取字符串中第一个出现的数值,第二行主场描述Holiday BLOCK (1 BLK)里的封盖计数1会被优先提取,因此输出错误结果c(20,1)。

解决方案

投篮距离在赛事日志中有独有格式特征:数字后紧跟单引号',其他计数类数值(封盖次数、犯规次数等)均不会带有该后缀,我们可以基于该特征用正则表达式做精准提取。

1. 构造示例数据

library(tidyverse)
# 示例数据
df <- tibble(
  HomePlayDescription = c("MISS Davis 20' Jump Shot", "Holiday BLOCK (1 BLK)"),
  AwayPlayDescription = c(NA, "MISS Payton 2' Layup")
)

2. tidyverse 实现方案

shot_dist <- df %>%
  # 合并两列描述数据,自动过滤空值
  pivot_longer(everything(), values_drop_na = TRUE) %>%
  # 匹配所有后缀带单引号的数字
  mutate(dist = str_extract(value, "\\d+(?=')")) %>%
  # 过滤无投篮距离的非投篮事件行
  filter(!is.na(dist)) %>%
  pull(dist) %>%
  as.numeric()

运行后输出shot_dist结果为20 2,符合预期。

3. base R 实现方案

如果你不想加载额外包,也可以用base R原生函数实现:

# 合并两列并去除空值
all_text <- na.omit(c(df$HomePlayDescription, df$AwayPlayDescription))
# 正则匹配带单引号的数字
dist_pattern <- gregexpr("\\d+(?=')", all_text, perl = TRUE)
shot_dist <- as.numeric(unlist(regmatches(all_text, dist_pattern)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:27:01