R에서 그룹당 최대값을 찾는 방법


종종 R의 데이터 프레임에 있는 각 그룹의 최대값을 찾고 싶을 수도 있습니다. 다행히 dplyr 패키지의 함수를 사용하면 이 작업을 쉽게 수행할 수 있습니다.

이 튜토리얼에서는 다음 데이터 프레임을 사용하여 이를 수행하는 방법을 설명합니다.

 #create data frame
df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position = c('G', 'F', 'F', 'G', 'G', 'G', 'F'),
                 points = c(12, 15, 19, 22, 34, 34, 39))

#view data frame
df

  team position points
1 AG 12
2 AF15
3 FY 19
4 BG 22
5 BG 34
6 BG 34
7 BF 39

예시 1: 그룹당 최대값 찾기

다음 코드는 포지션별 팀별 최대값을 찾는 방법을 보여줍니다.

 library(dplyr)

#find max value by team and position
df %>%
  group_by (team, position) %>%
  summarize (max = max(points, na.rm= TRUE ))

# A tibble: 4 x 3
# Groups: team [?]
  team position max
      
1AF 19.0
2 AG 12.0
3 BF 39.0
4 BG 34.0

예시 2: 그룹당 최대값이 포함된 행 반환

다음 코드는 팀별 및 직위별 최대값이 포함된 행을 반환하는 방법을 보여줍니다.

 library(dplyr)

#find rows that contain max points by team and position
df %>%
  group_by (team, position) %>%
  filter (points == max(points, na.rm= TRUE ))

# A tibble: 5 x 3
# Groups: team, position [4]
  team position points
       
1 AG 12.0
2AF 19.0
3 BG 34.0
4 BG 34.0
5BF 39.0

예시 3: 그룹당 최대값을 포함하는 단일 행 반환

이전 예에서는 A 팀에서 최대 점수를 얻은 두 명의 플레이어가 있었고 둘 다 G 위치에 있었습니다. 최대 값을 가진 첫 번째 플레이어만 그룹으로 되돌리려면 슬라이스( ) 기능. 다음과 같이 작동합니다:

 library(dplyr)

#find rows that contain max points by team and position
df %>%
  group_by (team, position) %>%
  slice (which.max(points))

# A tibble: 4 x 3
# Groups: team, position [4]
  team position points
       
1AF 19.0
2 AG 12.0
3 BF 39.0
4 BG 34.0

추가 리소스

전체 가이드: R에서 데이터를 그룹화하고 요약하는 방법
R에서 행을 필터링하는 방법
R에서 중복 줄을 제거하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다