Dplyr을 사용하여 그룹별로 변수를 정렬하는 방법
다음 기본 구문을 사용하여 dplyr에서 변수를 그룹화할 수 있습니다.
df %>% arrange (group_var, numeric_var) %>% group_by (group_var) %>% mutate (rank = rank(numeric_var))
다음 예에서는 다음 데이터 프레임에서 실제로 이 구문을 사용하는 방법을 보여줍니다.
#create data frame df <- data. frame (team = c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'), points = c(12, 28, 19, 22, 32, 45, 22, 28, 13, 19), rebounds = c(5, 7, 7, 12, 11, 4, 10, 7, 8, 8)) #view data frame df team points rebounds 1 to 12 5 2 to 28 7 3 to 19 7 4 A 22 12 5 B 32 11 6 B 45 4 7 B 22 10 8 C 28 7 9 C 13 8 10 C 19 8
예시 1: 오름차순 순위
다음 코드는 플레이어가 득점한 점수를 팀별로 그룹화하여 오름차순으로 정렬하는 방법을 보여줍니다.
library (dplyr) #rank points scored, grouped by team df %>% arrange (team, points) %>% group_by (team) %>% mutate (rank = rank(points)) # A tibble: 10 x 4 # Groups: team [3] team points rebounds rank 1 A 12 5 1 2 A 19 7 2 3 A 22 12 3 4 A 28 7 4 5 B 22 10 1 6 B 32 11 2 7 B 45 4 3 8 C 13 8 1 9 C 19 8 2 10 C 28 7 3
예시 2: 내림차순 순위
Rank() 함수 내에서 음수 기호를 사용하여 그룹별로 내림차순으로 점수를 분류할 수도 있습니다.
library (dplyr) #rank points scored in reverse, grouped by team df %>% arrange (team, points) %>% group_by (team) %>% mutate (rank = rank(-points)) # A tibble: 10 x 4 # Groups: team [3] team points rebounds rank 1 to 12 5 4 2 A 19 7 3 3 A 22 12 2 4 A 28 7 1 5 B 22 10 3 6 B 32 11 2 7 B 45 4 1 8 C 13 8 3 9 C 19 8 2 10 C 28 7 1
순위 동점을 처리하는 방법
Tie.method 인수를 사용하여 숫자 값을 정렬할 때 동점을 처리하는 방법을 지정할 수 있습니다.
rank(points, ties. method = ' average ')
다음 옵션 중 하나를 사용하여 링크 처리 방법을 지정할 수 있습니다.
- average : (기본값) 연결된 각 항목에 평균 순위를 부여합니다(3위와 4위 항목은 모두 3.5 순위를 받습니다).
- first : 첫 번째로 연결된 요소를 가장 낮은 순위에 할당합니다(3위와 4위 요소는 각각 3위와 4위를 받습니다).
- min : 연결된 각 항목을 가장 낮은 순위에 할당합니다(3위와 4위 항목은 모두 3위를 받습니다).
- max : 연결된 각 항목에 가장 높은 순위를 할당합니다(3위와 4위 항목 모두 순위 4를 받습니다).
- 무작위 : 동률인 각 요소에 무작위 순위를 할당합니다(3위와 4위로 동률인 요소 중 하나가 순위를 받을 수 있음).
추가 리소스
다음 튜토리얼에서는 dplyr에서 다른 일반적인 기능을 수행하는 방법을 설명합니다.
dplyr을 사용하여 그룹별로 첫 번째 행을 선택하는 방법
dplyr을 사용하여 상대 빈도를 계산하는 방법
dplyr을 사용하여 값을 다시 코딩하는 방법
dplyr에서 NA를 0으로 바꾸는 방법