r의 여러 열에 걸쳐 dplyr 그룹화?

핫 베이컨

다음과 같은 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는 현재 플로어에있는 홈 팀 선수입니다.

player는 해당 행에 설명 된 관련 플레이를 한 플레이어의 이름입니다.

팀은 해당 행에 설명 된 관련 플레이를 만든 플레이어의 팀입니다.

reb는 바이너리로, 1은 리바운드가 이루어 졌음을 의미하고 0은 다른 모든 것을 의미합니다. 따라서이 데이터에서 추적 된 6 번째 플레이는 Dario Saric (필라델피아)의 리바운드였습니다.

각 플레이어의 팀이 바닥에있는 동안 게임 수준에서 그룹화하여 리바운드 한 횟수를 찾고 싶습니다. 이를 어렵게 만드는 한 가지는 데이터 세트 전체에서 플레이어가 a1 : h5 전체를 이동한다는 것입니다. 즉,이 첫 번째 게임에서 Dario Saric은 나중에 a4 및 a5 아래에 나열됩니다. 따라서 기본적으로 플레이어가 바닥에있는 동안 a1-h5 라인업에 나열되는 위치는 무작위입니다 (원정 팀은 모두 a1 : 5이고 홈 팀은 h1 : 5 임).

다음은 각 게임별로 그룹화 된 플레이어 별 리바운드를 찾는 데 사용한 것입니다.

library(dplyr)
rebs %>%
group_by(game_id, player) %>%
summarize(rebs = sum(reb))

그래도 각 선수가 바닥에있는 동안 팀이 가진 리바운드 수를 찾는 방법을 모르겠습니다. 예 : 6 번째 플레이 예에서는 Dario Saric만이 아니라 현재 플로어에있는 5 명의 필라델피아 선수 모두에 포함되기를 원합니다.

dplyr을 사용하여이 작업을 수행하려고하지만 가능한지 확실하지 않습니다. group_by (game_id, team)을 사용하고 a1 : h5에서 % in %를 수행하려고하는데 아무것도 클릭되지 않습니다. 어떤 도움이라도 대단히 감사합니다!

사용 tidyverse당신은 다음을 시도 할 수 있습니다. 이것은 가장 효율적인 방법이 아닐 수 있습니다.

먼저 reb == 1리바운드 데이터에만 관심이있는 경우 필터링하고 사용 가능한 나머지 플레이는 무시합니다.

그런 다음 각 리바운드 플레이에 번호를 할당합니다.

pivot_longer긴 형식으로 각 플레이에 대해 바닥에 플레이어 이름을 넣을 수 있습니다 . 이것은 또한 당신의 "홈"선수와 "어웨이"선수를 분리하여 같은 팀의 선수에게 점수를 줄 수 있습니다. 아마도 team이것이 다른 연극에서 누락되었지만 사용할 수 있습니다 .

만약 당신이 group_by game_id홈 vs. 어웨이, 그리고 플레이 번호, 당신은 팀 동료 리바운드를 계산하여 리바운드를하는 선수가 %in%다른 선수인지 확인할 수 있습니다 (홈 vs. 어웨이 값 공유).

그런 다음 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

SQL의 여러 행에 걸쳐 연속 세션 그룹화

분류에서Dev

R의 여러 열에 걸쳐 행당 히스토그램 그리기

분류에서Dev

R : 여러 열로 그룹화 한 후 Dplyr 지연 변수

분류에서Dev

dplyr : 함수의 여러 변수에 대한 그룹화

분류에서Dev

여러 열에 걸쳐 쌍의 인스턴스 계산

분류에서Dev

R의 여러 열에 걸쳐 문자열 발생을 표로 만들기

분류에서Dev

두 문자열 사이의 여러 줄에 걸쳐 텍스트 세그먼트 바꾸기-정규식

분류에서Dev

여러 열에 의한 SQL 그룹화

분류에서Dev

여러 줄에 걸쳐 R에서 rep 사용

분류에서Dev

여러 자릿수에 걸쳐 로그 시퀀스 생성

분류에서Dev

Pandas : 여러 열에 걸쳐 행에서 지정된 값의 빈도 얻기

분류에서Dev

ggplot2의 여러 플롯에 걸쳐 선 만들기

분류에서Dev

iText의 여러 페이지에 걸쳐있는 양식

분류에서Dev

여러 행에 걸쳐있는 방식의 Haskell "let"구문

분류에서Dev

여러 스레드에 걸쳐 개체의 속성 설정

분류에서Dev

R의 그룹에 의해 NA 행에 걸쳐 요약하는 방법

분류에서Dev

데이터 프레임의 여러 열에 걸쳐 유사한 요소 축소

분류에서Dev

여러 행에 걸쳐 jsonb 배열 내의 PostgreSQL 카운트 결과

분류에서Dev

여러 열에 걸친 원-핫 인코딩-그러나 하나의 그룹

분류에서Dev

R : 여러 열에 걸쳐 서로 범위 내에서 데이터 프레임의 행 찾기

분류에서Dev

R dplyr 인수가 충족되지 않은 경우에도 여러 열에서 그룹화 및 필터링의 합계를 찾습니다.

분류에서Dev

R의 단일 벡터에 걸쳐 여러 문자열 중 중복 단어 제거

분류에서Dev

R dplyr에서 여러 열을 그룹 별 상대 빈도로 변환

분류에서Dev

막대 그래프의 여러 열 값을 R로 그룹화

분류에서Dev

Oracle을 사용하여 SQL의 여러 테이블에 걸쳐 집계

분류에서Dev

AngularJS 여러 tr에 걸쳐 ng-repeat

분류에서Dev

여러 디렉토리에 걸쳐 Grepping

분류에서Dev

여러 클래스에 걸쳐 가변

분류에서Dev

Spark 1.5.2 : 시간 범위에 걸쳐 DataFrame 행 그룹화

Related 관련 기사

  1. 1

    SQL의 여러 행에 걸쳐 연속 세션 그룹화

  2. 2

    R의 여러 열에 걸쳐 행당 히스토그램 그리기

  3. 3

    R : 여러 열로 그룹화 한 후 Dplyr 지연 변수

  4. 4

    dplyr : 함수의 여러 변수에 대한 그룹화

  5. 5

    여러 열에 걸쳐 쌍의 인스턴스 계산

  6. 6

    R의 여러 열에 걸쳐 문자열 발생을 표로 만들기

  7. 7

    두 문자열 사이의 여러 줄에 걸쳐 텍스트 세그먼트 바꾸기-정규식

  8. 8

    여러 열에 의한 SQL 그룹화

  9. 9

    여러 줄에 걸쳐 R에서 rep 사용

  10. 10

    여러 자릿수에 걸쳐 로그 시퀀스 생성

  11. 11

    Pandas : 여러 열에 걸쳐 행에서 지정된 값의 빈도 얻기

  12. 12

    ggplot2의 여러 플롯에 걸쳐 선 만들기

  13. 13

    iText의 여러 페이지에 걸쳐있는 양식

  14. 14

    여러 행에 걸쳐있는 방식의 Haskell "let"구문

  15. 15

    여러 스레드에 걸쳐 개체의 속성 설정

  16. 16

    R의 그룹에 의해 NA 행에 걸쳐 요약하는 방법

  17. 17

    데이터 프레임의 여러 열에 걸쳐 유사한 요소 축소

  18. 18

    여러 행에 걸쳐 jsonb 배열 내의 PostgreSQL 카운트 결과

  19. 19

    여러 열에 걸친 원-핫 인코딩-그러나 하나의 그룹

  20. 20

    R : 여러 열에 걸쳐 서로 범위 내에서 데이터 프레임의 행 찾기

  21. 21

    R dplyr 인수가 충족되지 않은 경우에도 여러 열에서 그룹화 및 필터링의 합계를 찾습니다.

  22. 22

    R의 단일 벡터에 걸쳐 여러 문자열 중 중복 단어 제거

  23. 23

    R dplyr에서 여러 열을 그룹 별 상대 빈도로 변환

  24. 24

    막대 그래프의 여러 열 값을 R로 그룹화

  25. 25

    Oracle을 사용하여 SQL의 여러 테이블에 걸쳐 집계

  26. 26

    AngularJS 여러 tr에 걸쳐 ng-repeat

  27. 27

    여러 디렉토리에 걸쳐 Grepping

  28. 28

    여러 클래스에 걸쳐 가변

  29. 29

    Spark 1.5.2 : 시간 범위에 걸쳐 DataFrame 행 그룹화

뜨겁다태그

보관