如何从 NBA 事件日志中提取英尺数
How to extract the number of feet from an NBA event log
所以我有一个 NBA 逐场比赛数据日志的主场和客场比赛描述数据。我想从这两列中提取拍摄距离。
HomePlayDescription
AwayPlayDescription
MISS Davis 20' Jump Shot
NA
Holiday BLOCK (1 BLK)
MISS Payton 2' Layup
在这种情况下所需的输出是 c(20,2)
我已经尝试 parse_number 从 tidyr 但这将给出向量 c(20,1),因为函数不知道我只想要提取的距离。
您可以使用这样的模式从字符串中提取距离:
(?:MISS|MADE)\b\w+(\d{1,2})'[\w\b]+
- 使用
acrosse
和 parse_number
仅获取整个数据帧中的数字
- 使用
lead
将 AwayPlayDescription
与 HomePlayDescription
放在同一行
paste
他们在一起
slice
第二行(这可以在多个组的组内完成。
pull
距离:
library(tidyverse)
df %>%
mutate(across(everything(), parse_number)) %>%
mutate(AwayPlayDescription = lead(AwayPlayDescription)) %>%
mutate(distance = paste(HomePlayDescription, AwayPlayDescription, sep = ",")) %>%
slice(-2) %>%
pull(distance)
[1] "20,2"
所以我有一个 NBA 逐场比赛数据日志的主场和客场比赛描述数据。我想从这两列中提取拍摄距离。
HomePlayDescription | AwayPlayDescription |
---|---|
MISS Davis 20' Jump Shot | NA |
Holiday BLOCK (1 BLK) | MISS Payton 2' Layup |
在这种情况下所需的输出是 c(20,2)
我已经尝试 parse_number 从 tidyr 但这将给出向量 c(20,1),因为函数不知道我只想要提取的距离。
您可以使用这样的模式从字符串中提取距离:
(?:MISS|MADE)\b\w+(\d{1,2})'[\w\b]+
- 使用
acrosse
和parse_number
仅获取整个数据帧中的数字 - 使用
lead
将AwayPlayDescription
与HomePlayDescription
放在同一行
paste
他们在一起slice
第二行(这可以在多个组的组内完成。pull
距离:
library(tidyverse)
df %>%
mutate(across(everything(), parse_number)) %>%
mutate(AwayPlayDescription = lead(AwayPlayDescription)) %>%
mutate(distance = paste(HomePlayDescription, AwayPlayDescription, sep = ",")) %>%
slice(-2) %>%
pull(distance)
[1] "20,2"