有一些看起来像这样的nba数据-
>head(rebs)
game_id a1 a2 a3 a4 a5 h1 h2 h3 h4
1 21800001 Dario Saric Robert Covington Joel Embiid Markelle Fultz Ben Simmons Jayson Tatum Gordon Hayward Al Horford Jaylen Brown
2 21800001 Dario Saric Robert Covington Joel Embiid Markelle Fultz Ben Simmons Jayson Tatum Gordon Hayward Al Horford Jaylen Brown
3 21800001 Dario Saric Robert Covington Joel Embiid Markelle Fultz Ben Simmons Jayson Tatum Gordon Hayward Al Horford Jaylen Brown
4 21800001 Dario Saric Robert Covington Joel Embiid Markelle Fultz Ben Simmons Jayson Tatum Gordon Hayward Al Horford Jaylen Brown
5 21800001 Dario Saric Robert Covington Joel Embiid Markelle Fultz Ben Simmons Jayson Tatum Gordon Hayward Al Horford Jaylen Brown
6 21800001 Dario Saric Robert Covington Joel Embiid Markelle Fultz Ben Simmons Jayson Tatum Gordon Hayward Al Horford Jaylen Brown
h5 player team event_type type reb
1 Kyrie Irving start of period start of period 0
2 Kyrie Irving Al Horford PHI jump ball jump ball 0
3 Kyrie Irving Robert Covington PHI miss Jump Shot 0
4 Kyrie Irving rebound team rebound 0
5 Kyrie Irving Jayson Tatum BOS miss Jump Shot 0
6 Kyrie Irving Dario Saric PHI rebound rebound defensive 1
game_id是正在玩的游戏的ID。有一个完整的数据季节,所以这组游戏很多。
这是按比赛级别划分的NBA数据。a1:a5当前不在场的球队队员,h1:h5当前正在比赛的主队队员。
玩家是在该行中描述了相关游戏的玩家的名称
球队是指在该行中进行了相关比赛的球员的球队
reb是一个二进制数,其中1表示已经反弹,而0表示其他所有内容。因此,该数据中排名第六的是达里奥·萨里克(费城)的反弹。
我想找到每个球员在场上所获得的篮板次数,并按游戏水平分组。造成这一困难的一件事是,在整个数据集中,玩家将在a1:h5内移动所有东西,即,在第一个游戏Dario Saric之后被列在a4和a5下。因此,基本上是随机的,一个球员在场上将被列在a1-h5阵容中(除了客队是a1:5,主队是h1:5)。
这是我过去根据每个游戏分组的球员篮板的发现:
library(dplyr)
rebs %>%
group_by(game_id, player) %>%
summarize(rebs = sum(reb))
但我不确定如何确定每位球员在场时球队的篮板数。例如。在第六个播放示例中,我希望将其计入当前在场的所有5位费城球员,而不仅仅是Dario Saric。
尝试使用dplyr执行此操作,但不确定是否可行。我正在尝试使用group_by(game_id,team),然后在a1:h5上执行%in%,但是没有任何点击。任何帮助,不胜感激!
使用tidyverse
您可以尝试以下方法。这可能不是最有效的方法。
reb == 1
如果仅对查看反弹数据感兴趣,则首先进行筛选,而忽略其余可用的比赛。
然后将为每个篮板分配一个数字。
您可以pivot_longer
将每场比赛的球员姓名放长格式。这也将把您的“主场”和“客场”球员分开,因此您可以为同一支球队的球员提供功劳。也许您可以使用,team
尽管其他剧本都没有。
如果您有group_by
game_id
(无论是主场还是客场)以及比赛次数,则可以算出队友的篮板,检查篮板球员是否是%in%
其他球员(共享主场与客场的价值)。
然后,您可以为group_by
每个团队成员加总这些篮板。
library(tidyverse)
rebs %>%
filter(reb == 1) %>%
mutate(play_number = row_number()) %>%
pivot_longer(a1:h5, names_to = c("home_away", "num"), values_to = "team_player", names_pattern = "(a|h)(\\d)") %>%
group_by(game_id, home_away, play_number) %>%
mutate(teammate_reb = ifelse(player %in% team_player, 1, 0)) %>%
group_by(game_id, team_player) %>%
summarise(reb_total = sum(teammate_reb))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句