Sort.Rd
Sort a vector, a matrix, a table or a data.frame. The base sort function does not have an interface for classes other than vectors and coerces the whole world to a vector. This means you get a sorted vector as result while passing a matrix to sort
.Sort
wraps the base sort function and adds an interface for sorting the rows of the named 2-dimensional data structures by the order of one or more of its columns.
Sort(x, ...)
# Default S3 method
Sort(x, ...)
# S3 method for class 'matrix'
Sort(x, ord = NULL, decreasing = FALSE, na.last = TRUE, ...)
# S3 method for class 'table'
Sort(x, ord = NULL, decreasing = FALSE, na.last = TRUE, ...)
# S3 method for class 'data.frame'
Sort(x, ord = NULL, decreasing = FALSE,
factorsAsCharacter = TRUE, na.last = TRUE, ...)
a numeric, complex. character or logical vector, a factor, a table or a data.frame to be sorted.
logical. Should the sort be increasing or decreasing?
logical. Should factors be sorted by the alphabetic order of their labels or by the order or their levels.
Default is TRUE
(by labels).
vector of integers or columnames. Defines the columns in a table, in a matrix or in a data.frame to be sorted for.
0 means row.names, 1:n the columns and n+1 the marginal sum. See examples.
for controlling the treatment of NAs
. If TRUE
, missing values in the data are put last; if FALSE
, they are put first; if NA
, they are removed (see order
.)
further arguments to be passed to or from methods.
The sort order for factors is the order of their levels (which is particularly appropriate for ordered factors), and usually confusing for unordered factors, whose levels may be defined in the sequence in which they appear in the data (which normally is unordered).
the sorted object.
d.frm <- d.pizza[1:10, c("driver","temperature","delivery_min")]
Sort(d.frm[,1])
#> [1] Butcher Butcher Carter Carter Taylor Taylor Taylor Taylor Taylor
#> [10] Taylor
#> Levels: Butcher Carpenter Carter Farmer Hunter Miller Taylor
# Sort follows the levels by default
levels(d.frm[,1])
#> [1] "Butcher" "Carpenter" "Carter" "Farmer" "Hunter" "Miller"
#> [7] "Taylor"
Sort(x=d.frm, ord="driver", decreasing=FALSE)
#> driver temperature delivery_min
#> 2 Butcher 56.4 19.6
#> 3 Butcher 36.5 17.8
#> 5 Carter 50.0 21.8
#> 10 Carter 54.4 24.3
#> 1 Taylor 53.0 20.0
#> 4 Taylor NA 37.3
#> 6 Taylor 27.0 48.7
#> 7 Taylor 33.9 49.3
#> 8 Taylor 54.8 25.6
#> 9 Taylor 48.0 26.4
# set factorsAsCharacter = TRUE, if alphabetical order is required
Sort(x=d.frm, ord="driver", decreasing=FALSE, factorsAsCharacter=TRUE)
#> driver temperature delivery_min
#> 2 Butcher 56.4 19.6
#> 3 Butcher 36.5 17.8
#> 5 Carter 50.0 21.8
#> 10 Carter 54.4 24.3
#> 1 Taylor 53.0 20.0
#> 4 Taylor NA 37.3
#> 6 Taylor 27.0 48.7
#> 7 Taylor 33.9 49.3
#> 8 Taylor 54.8 25.6
#> 9 Taylor 48.0 26.4
Sort(x=d.frm, ord=c("driver","delivery_min"), factorsAsCharacter = TRUE)
#> driver temperature delivery_min
#> 3 Butcher 36.5 17.8
#> 2 Butcher 56.4 19.6
#> 5 Carter 50.0 21.8
#> 10 Carter 54.4 24.3
#> 1 Taylor 53.0 20.0
#> 8 Taylor 54.8 25.6
#> 9 Taylor 48.0 26.4
#> 4 Taylor NA 37.3
#> 6 Taylor 27.0 48.7
#> 7 Taylor 33.9 49.3
Sort(x=d.frm, ord=c("driver","delivery_min"), factorsAsCharacter = FALSE)
#> driver temperature delivery_min
#> 3 Butcher 36.5 17.8
#> 2 Butcher 56.4 19.6
#> 5 Carter 50.0 21.8
#> 10 Carter 54.4 24.3
#> 1 Taylor 53.0 20.0
#> 8 Taylor 54.8 25.6
#> 9 Taylor 48.0 26.4
#> 4 Taylor NA 37.3
#> 6 Taylor 27.0 48.7
#> 7 Taylor 33.9 49.3
Sort(x=d.frm, ord=c("driver","delivery_min"), decreasing=c(FALSE, TRUE),
factorsAsCharacter = FALSE)
#> driver temperature delivery_min
#> 2 Butcher 56.4 19.6
#> 3 Butcher 36.5 17.8
#> 10 Carter 54.4 24.3
#> 5 Carter 50.0 21.8
#> 7 Taylor 33.9 49.3
#> 6 Taylor 27.0 48.7
#> 4 Taylor NA 37.3
#> 9 Taylor 48.0 26.4
#> 8 Taylor 54.8 25.6
#> 1 Taylor 53.0 20.0
# Sorting tables
tab <- table(d.pizza$driver, d.pizza$area)
Sort(x=tab, ord=c(0,2), decreasing=c(TRUE, FALSE))
#>
#> Brent Camden Westminster
#> Taylor 42 142 20
#> Miller 6 41 77
#> Hunter 128 4 24
#> Farmer 19 87 11
#> Carter 177 47 5
#> Carpenter 29 19 221
#> Butcher 72 1 22
Sort(x=tab, ord=2, decreasing=TRUE)
#>
#> Brent Camden Westminster
#> Taylor 42 142 20
#> Farmer 19 87 11
#> Carter 177 47 5
#> Miller 6 41 77
#> Carpenter 29 19 221
#> Hunter 128 4 24
#> Butcher 72 1 22
# partial matching ok:
Sort(tab, o=1, d=TRUE)
#>
#> Brent Camden Westminster
#> Carter 177 47 5
#> Hunter 128 4 24
#> Butcher 72 1 22
#> Taylor 42 142 20
#> Carpenter 29 19 221
#> Farmer 19 87 11
#> Miller 6 41 77