Dplyr을 사용하여 사용자 정의 순서로 행을 정렬하는 방법


다음 기본 구문을 사용하여 R의 dplyr 패키지를 사용하여 데이터 프레임의 행을 사용자 정의 순서로 정렬할 수 있습니다.

 library (dplyr)

#arrange rows in custom order based on values in 'team' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

이 특정 예에서는 열 값에 대한 사용자 정의 순서 C, B, D, A를 기준으로 행을 정렬한 다음 포인트 열 값에 따라 오름차순으로 정렬합니다.

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

예: dplyr을 사용하여 사용자 정의 순서로 행을 정렬하는 방법

서로 다른 팀의 농구 선수들이 득점한 점수를 보여주는 다음 데이터 프레임이 있다고 가정합니다.

 #create data frame
df <- data. frame (team=c('A', 'B', 'A', 'A', 'B', 'D', 'C', 'D', 'D', 'C'),
                 points=c(12, 20, 14, 34, 29, 22, 28, 15, 20, 13))

#view data frame
df

   team points
1 to 12
2 B 20
3 to 14
4 to 34
5 B 29
6 D 22
7 C 28
8 D 15
9 D 20
10 C 13

array() 함수를 사용하여 열의 값을 기준으로 행을 정렬한 다음 포인트 열의 값을 기준으로 행을 정렬하는 경우, alignment() 함수는 기본 알파벳 순서에 따라 행을 정렬합니다. :

 library (dplyr)

#arrange rows in ascending order by team, then by points
df %>%
  arrange(team, points)

   team points
1 to 12
2 to 14
3 to 34
4 B 20
5 B 29
6 C 13
7 C 28
8 D 15
9 D 20
10 D 22

라인은 팀별 로 알파벳순으로 나열된 다음 포인트 별로 오름차순으로 나열됩니다.

그러나 값의 순서(C, B, D, A)에 따라 줄을 정렬한다고 가정해 보겠습니다.

이 작업을 수행하려면 정렬() 함수 내에서 match() 함수를 사용할 수 있습니다.

 library (dplyr)

#arrange rows in custom order based on 'team' column, then by 'points' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

   team points
1 C 13
2 C 28
3 B 20
4 B 29
5 D 15
6 D 20
7 D 22
8 to 12
9 to 14
10 to 34

행은 열에 대해 지정한 사용자 지정 순서(C, B, D, A)에 이어 포인트 열별로 정렬됩니다.

참고 #1 : 일치 함수는 팀 열 값의 행 인덱스를 가져온 다음 정렬 함수는 이러한 인덱스 값을 기준으로 정렬할 수 있습니다.

참고 #2 : 포인트 값을 줄여 정렬하려면 대신 desc(points)를 사용하면 됩니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

dplyr을 사용하여 그룹별로 행을 구성하는 방법
dplyr을 사용하여 고유 값을 필터링하는 방법
dplyr을 사용하여 여러 조건으로 필터링하는 방법

의견을 추가하다

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