order.custom {str2str}R Documentation

Custom Order Permutation

Description

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.

Usage

order.custom(X, ORD, na.last = FALSE, decreasing = FALSE)

Arguments

X

list of atomic vectors parellel matched with the atomic vectors in X specifying the elements to be ordered. Can also be a single atomic vector, which will internally be converted to a list with one element.

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 ORD and proceed forward (FALSE) or the last element of the atomic vectors within ORD and proceed backwards (TRUE).

Details

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.

Value

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.

Examples

# 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, ]

[Package str2str version 1.0.0 Index]