Dplyr에서 하나를 제외한 모든 열을 그룹화하는 방법
R의 dplyr 패키지를 사용하여 데이터 프레임에서 하나의 열을 제외한 모든 열을 그룹화하려면 다음 기본 구문을 사용할 수 있습니다.
df %>%
group_by(across(c( - this_column)))
이 특정 예는 this_column 이라는 열을 제외한 모든 열을 기준으로 데이터 프레임을 그룹화합니다.
수식의 음수 기호( – )는 dplyr가 group_by() 함수에서 해당 특정 열을 제외하도록 지시합니다.
다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.
예: dplyr에서 하나를 제외한 모든 열을 기준으로 그룹화
다양한 농구 선수에 대한 정보를 포함하는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'), starter=c('Y', 'Y', 'Y', 'N', 'Y', 'N', 'N', 'N'), dots=c(99, 104, 119, 113)) #view data frame df team position starter points 1 AGY 99 2 AGY 104 3 AFY 119 4 AFN 113 5 BGY 99 6 BGN 104 7 BFN 119 8 BFN 113
이제 데이터 프레임의 다른 모든 열에 걸쳐 그룹화된 포인트 열에서 최대값을 찾고 싶다고 가정합니다.
이를 위해 다음 구문을 사용할 수 있습니다.
library (dplyr) #group by all columns except points column and find max points df %>% group_by(across(c( - points))) %>% mutate(max_points = max(points)) # A tibble: 8 x 5 # Groups: team, position, starter [6] team position starter points max_points 1 AGY 99 104 2 AGY 104 104 3 AFY 119 119 4 AFN 113 113 5 BGY 99 99 6 BGN 104 104 7 BFN 119 119 8 BFN 113 119
결과에서 우리는 다음을 볼 수 있습니다:
- 팀 값이 A, 포지션 값이 G, 시작 값이 Y인 모든 플레이어의 최대 점수 값은 104 였습니다.
- 팀 값이 A, 포지션 값이 F, 시작 값이 Y인 모든 플레이어의 최대 점수 값은 119 였습니다.
- 팀 값이 A, 포지션 값이 F, 시작 값이 N인 모든 플레이어의 최대 점수 값은 113 이었습니다.
등등.
점을 제외한 모든 열 이름을 group_by() 함수에 입력하면 동일한 결과를 얻을 수도 있습니다.
library (dplyr) #group by all columns except points column and find max points df %>% group_by(across(c(team, position, starter))) %>% mutate(max_points = max(points)) # A tibble: 8 x 5 # Groups: team, position, starter [6] team position starter points max_points 1 AGY 99 104 2 AGY 104 104 3 AFY 119 119 4 AFN 113 113 5 BGY 99 99 6 BGN 104 104 7 BFN 119 119 8 BFN 113 119
이는 이전 예제의 결과에 해당합니다.
그러나 다른 모든 열의 이름을 입력하는 것보다 group_by() 함수에서 포인트 열을 제외하는 것이 훨씬 쉽습니다.
추가 리소스
다음 튜토리얼에서는 dplyr을 사용하여 다른 일반적인 작업을 수행하는 방법을 설명합니다.
dplyr을 사용하여 특정 문자열이 포함된 행을 필터링하는 방법
dplyr을 사용하여 상대 빈도를 계산하는 방법
dplyr을 사용하여 그룹별로 첫 번째 행을 선택하는 방법