dplyr跨r中的多个列分组?

热培根

有一些看起来像这样的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%,但是没有任何点击。任何帮助,不胜感激!

Ben

使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用“跨”更改dplyr中的多个列

来自分类Dev

分组操作在一个函数中的功能以及跨多个列的选项

来自分类Dev

R dplyr查找group by的总和并跨多个列进行过滤,即使不满足参数

来自分类Dev

如何使用dplyr在R中使用值转换数据框跨多个列更改值

来自分类Dev

dplyr:将函数中的多个变量分组

来自分类Dev

如何使用R中的多个列进行按组分组?

来自分类Dev

在postgres中跨多个列聚合函数

来自分类Dev

跨R中的多个变量替换值

来自分类Dev

在dplyr中创建多个列

来自分类Dev

dplyr-使用变量名对多个列进行分组

来自分类Dev

跨列按ID分组

来自分类Dev

跨多列的分组函数

来自分类Dev

R根据多个列的组合进行分组

来自分类Dev

跨多个列的Vlookup

来自分类Dev

mysql在多个列中按值分组

来自分类Dev

无法将XML中的多个列分组

来自分类Dev

R中跨列的行值比较

来自分类Dev

在R中跨列运行聚合

来自分类Dev

R中跨列的条件变异

来自分类Dev

R中跨列的模糊匹配

来自分类Dev

在R中按天分组的多个列中的缺失数据计数

来自分类Dev

使用dplyr分组多个帐户

来自分类Dev

python在分组数据框时跨多个列获取最大值和最小值

来自分类Dev

R:跨多个矩阵更快的最小列值?

来自分类Dev

根据跨多个列的时间值重复行-R

来自分类Dev

R:跨多个矩阵更快的最小列值?

来自分类Dev

R:按多列分组后的 Dplyr 滞后变量

来自分类Dev

R中的dplyr中的“添加缺少的分组变量”消息

来自分类Dev

在没有pivot_longer的情况下,通过dplyr中R中的列分组计算rowMeans