Order tbl rows by an expression involving its variables.

arrange(.data, ...)

# S3 method for grouped_df
arrange(.data, ..., .by_group = FALSE)

Arguments

.data

A tbl. All main verbs are S3 generics and provide methods for tbl_df(), dtplyr::tbl_dt() and dbplyr::tbl_dbi().

...

Comma separated list of unquoted variable names, or expressions involving variable names. Use desc() to sort a variable in descending order.

.by_group

If TRUE, will sort first by grouping variable. Applies to grouped data frames only.

Value

An object of the same class as .data.

Locales

The sort order for character vectors will depend on the collating sequence of the locale in use: see locales().

Missing values

Unlike base sorting with sort(), NA are:

  • always sorted to the end for local data, even when wrapped with desc().

  • treated differently for remote data, depending on the backend.

Tidy data

When applied to a data frame, row names are silently dropped. To preserve, convert to an explicit variable with tibble::rownames_to_column().

See also

Other single table verbs: filter, mutate, select, slice, summarise

Examples

arrange(mtcars, cyl, disp)
#> mpg cyl disp hp drat wt qsec vs am gear carb #> 1 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 #> 2 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 #> 3 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 #> 4 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 #> 5 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 #> 6 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 #> 7 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 #> 8 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 #> 9 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 #> 10 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 #> 11 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 #> 12 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 #> 13 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 #> 14 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 #> 15 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 #> 16 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 #> 17 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 #> 18 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 #> 19 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 #> 20 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 #> 21 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 #> 22 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 #> 23 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 #> 24 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 #> 25 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 #> 26 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 #> 27 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 #> 28 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 #> 29 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 #> 30 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 #> 31 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 #> 32 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
arrange(mtcars, desc(disp))
#> mpg cyl disp hp drat wt qsec vs am gear carb #> 1 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 #> 2 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 #> 3 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 #> 4 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 #> 5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 #> 6 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 #> 7 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 #> 8 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 #> 9 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 #> 10 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 #> 11 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 #> 12 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 #> 13 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 #> 14 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 #> 15 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 #> 16 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 #> 17 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 #> 18 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 #> 19 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 #> 20 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 #> 21 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 #> 22 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 #> 23 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 #> 24 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 #> 25 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 #> 26 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 #> 27 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 #> 28 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 #> 29 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 #> 30 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 #> 31 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 #> 32 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
# grouped arrange ignores groups by_cyl <- mtcars %>% group_by(cyl) by_cyl %>% arrange(desc(wt))
#> # A tibble: 32 x 11 #> # Groups: cyl [3] #> mpg cyl disp hp drat wt qsec vs am gear carb #> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 10.4 8 460 215 3 5.42 17.8 0 0 3 4 #> 2 14.7 8 440 230 3.23 5.34 17.4 0 0 3 4 #> 3 10.4 8 472 205 2.93 5.25 18.0 0 0 3 4 #> 4 16.4 8 276. 180 3.07 4.07 17.4 0 0 3 3 #> 5 19.2 8 400 175 3.08 3.84 17.0 0 0 3 2 #> 6 13.3 8 350 245 3.73 3.84 15.4 0 0 3 4 #> 7 15.2 8 276. 180 3.07 3.78 18 0 0 3 3 #> 8 17.3 8 276. 180 3.07 3.73 17.6 0 0 3 3 #> 9 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4 #> 10 15 8 301 335 3.54 3.57 14.6 0 1 5 8 #> # … with 22 more rows
# Unless you specifically ask: by_cyl %>% arrange(desc(wt), .by_group = TRUE)
#> # A tibble: 32 x 11 #> # Groups: cyl [3] #> mpg cyl disp hp drat wt qsec vs am gear carb #> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 24.4 4 147. 62 3.69 3.19 20 1 0 4 2 #> 2 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2 #> 3 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2 #> 4 21.5 4 120. 97 3.7 2.46 20.0 1 0 3 1 #> 5 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 #> 6 32.4 4 78.7 66 4.08 2.2 19.5 1 1 4 1 #> 7 26 4 120. 91 4.43 2.14 16.7 0 1 5 2 #> 8 27.3 4 79 66 4.08 1.94 18.9 1 1 4 1 #> 9 33.9 4 71.1 65 4.22 1.84 19.9 1 1 4 1 #> 10 30.4 4 75.7 52 4.93 1.62 18.5 1 1 4 2 #> # … with 22 more rows