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으로 바꾸는 방법

의견을 추가하다

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