You can use one of the following methods to sort a data frame by multiple columns in R:
Method 1: Use Base R
df[order(-df$column1, df$column2), ]
Method 2: Use dplyr
library(dplyr) df %>% arrange(desc(column1), column2)
The following examples show how to use each method in practice with the following data frame:
#create data frame df frame(team=c('A', 'B', 'C', 'D', 'E', 'F', 'G'), points=c(90, 90, 93, 91, 91, 99, 85), assists=c(33, 28, 31, 39, 34, 40, 44)) #view data frame df team points assists 1 A 90 33 2 B 90 28 3 C 93 31 4 D 91 39 5 E 91 34 6 F 99 40 7 G 85 44
Method 1: Use Base R
The following code shows how to sort the data frame in base R by points descending (largest to smallest), then by assists ascending:
#sort by points descending, then by assists ascending
df[order(-df$points, df$assists), ]
team points assists
6 F 99 40
3 C 93 31
5 E 91 34
4 D 91 39
2 B 90 28
1 A 90 33
7 G 85 44
Notice that the rows of the data frame are ordered by points from largest to smallest, then by assists from smallest to largest.
Method 2: Use dplyr
The following code shows how to use functions from the dplyr package to sort the data frame by points descending (largest to smallest), then by assists ascending:
library(dplyr)
df %>%
arrange(desc(points), assists)
team points assists
1 F 99 40
2 C 93 31
3 E 91 34
4 D 91 39
5 B 90 28
6 A 90 33
7 G 85 44
Once again, the rows of the data frame are ordered by points from largest to smallest, then by assists from smallest to largest.
Note: You can find the complete documentation for the arrange() function here.
Additional Resources
The following tutorials explain how to perform other common sorting operations in R:
How to Sort Values Alphabetically in R
How to Sort a Data Frame by Date in R