Custom Order Permutation
order.custom
creates the order of the positions in the atomic vectors
from X
that would cause the atomic vectors from X
to be sorted
according to the atomic vectors from ORD
. This is analogus to the
order
function, but instead of doing default sorting (e.g., 1, 2, 3, etc.
or "A", "B", "C", etc.), the sorting is customized by ORD
.
order.custom
does custom ordering by converting each atomic vector from
X
to an ordered factor and then default sorting the ordered factors.
order.custom(X, ORD, na.last = FALSE, decreasing = FALSE)
X |
list of atomic vectors parellel matched with the atomic vectors in |
ORD |
list of atomic vectors that do NOT have to be the same length specifying the order of the unique values for sorting. Can also be a single atomic vector, which will internally be converted to a list with one element. |
na.last |
logical vector of length 1 specifying whether missing values should be put last (TRUE), first (FALSE), or removed (NA). |
decreasing |
logical vector of length 1 specifying whether the sorting
should start with the first element of the atomic vectors within |
Note, that the atomic vectors within X
are always forward sequenced;
if backward sequence is desired, then the user should call rev
on both
the input to X
and ORD
. This is analogous to reversing the
order of the atomic vectors given to ...
within order
.
integer vector of length = X[[1]]
(after converting X
to
a list with one element is need be) providing the revised order of the atomic
vectors within X
that sorts them according to ORD
.
# character vector x <- esoph[["tobgp"]] order.custom(X = x, ORD = c("20-29","10-19","30+","0-9g/day")) x[order.custom(X = x, ORD = c("20-29","10-19","30+","0-9g/day"))] # returns character esoph[order.custom(X = x, ORD = c("20-29","10-19","30+","0-9g/day")), ] # order by position sort(state.region) x <- as.character(state.region) order.custom(X = x, ORD = unique(x)) x[order.custom(X = x, ORD = unique(x))] # numeric vector y <- esoph[["ncases"]] order.custom(X = y, ORD = c(6,5,4,3,2,1,0,17,8,9)) y[order.custom(X = y, ORD = c(6,5,4,3,2,1,0,17,8,9))] # returns numeric esoph[order.custom(X = y, ORD = c(6,5,4,3,2,1,0,17,8,9)), ] # some unique values not provided in `ORD` (appended at the end and sorted by # where they appear in the dataset) y <- esoph[["ncases"]] order.custom(X = y, ORD = c(6,5,4,3,2,1,0)) y[order.custom(X = y, ORD = c(6,5,4,3,2,1,0))] # returns numeric esoph[order.custom(X = y, ORD = c(6,5,4,3,2,1,0)), ] # multiple vectors z <- esoph[c("agegp","alcgp","tobgp")] ord <- order.custom(X = z, ORD = list( "agegp" = c("45-54","55-64","35-44","65-74","25-34","75+"), "alcgp" = c("40-79","80-119","0-39g/day","120+"), "tobgp" = c("10-19","20-29","0-9g/day","30+"))) esoph[ord, ]
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.