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() )