Dplyr을 사용하여 그룹별로 첫 번째 행을 선택하는 방법


R의 dplyr 패키지를 사용하여 각 그룹의 첫 번째 행을 선택하려는 경우가 종종 있습니다. 이를 수행하려면 다음 기본 구문을 사용할 수 있습니다.

 df %>%
  group_by (group_var) %>%
  arrange (values_var) %>%
  filter (row_number()== 1 )

다음 예에서는 이 기능을 실제로 사용하는 방법을 보여줍니다.

예: R에서 그룹별로 첫 번째 행 선택

R에 다음과 같은 데이터 세트가 있다고 가정합니다.

 #create dataset
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C' ),
                 points=c(4, 9, 7, 7, 6, 13, 8, 8, 4, 17))

#view dataset
df

   team points
1 to 4
2 to 9
3 to 7
4 B 7
5 B 6
6 B 13
7 C 8
8 C 8
9 C 4
10 C 17

다음 코드는 dplyr 패키지를 사용하여 R에서 그룹별로 첫 번째 행을 선택하는 방법을 보여줍니다.

 library (dplyr)

df %>%
  group_by (team) %>%
  arrange (points) %>%
  filter (row_number()== 1 )

# A tibble: 3 x 2
# Groups: team [3]
  team points
    
1 to 4
2 C 4
3 B 6

기본적으로 배열()은 값을 오름차순으로 정렬하지만 우리는 값을 내림차순으로 쉽게 정렬할 수 있습니다.

 df %>%
  group_by (team) %>%
  arrange ( desc (dots)) %>%
  filter (row_number()== 1 )

# A tibble: 3 x 2
# Groups: team [3]
  team points
    
1 C 17
2 B 13
3 to 9

이 코드를 쉽게 수정하여 각 그룹의 n번째 행을 선택할 수 있습니다. row_number() == n 을 변경하세요.

예를 들어 그룹별로 두 번째 행을 선택하려면 다음 구문을 사용하면 됩니다.

 df %>%
  group_by (team) %>%
  arrange ( desc (dots)) %>%
  filter (row_number()== 2 )

또는 다음 구문을 사용하여 그룹별로 마지막 행을 선택할 수 있습니다.

 df %>%
  group_by (team) %>%
  arrange ( desc (dots)) %>%
  filter (row_number()== n() )

추가 리소스

R에서 줄을 정렬하는 방법
R에서 그룹당 관측치를 계산하는 방법
R에서 그룹당 최대값을 찾는 방법

의견을 추가하다

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