Hi, I ran into a problem where I actually need rank(, ties.method="last"). It would be great to have this feature in base and it's also simple to get (see below).
Thanks & cheers, Marius rank2 <- function (x, na.last = TRUE, ties.method = c("average", "first", "last", # new "last" "random", "max", "min")) { nas <- is.na(x) nm <- names(x) ties.method <- match.arg(ties.method) if (is.factor(x)) x <- as.integer(x) x <- x[!nas] y <- switch(ties.method, average = , min = , max = .Internal(rank(x, length(x), ties.method)), first = sort.list(sort.list(x)), last = sort.list(sort.list(x, decreasing=TRUE), decreasing=TRUE), # change random = sort.list(order(x, stats::runif(sum(!nas))))) if (!is.na(na.last) && any(nas)) { yy <- NA NAkeep <- (na.last == "keep") if (NAkeep || na.last) { yy[!nas] <- y if (!NAkeep) yy[nas] <- (length(y) + 1L):length(yy) } else { len <- sum(nas) yy[!nas] <- y + len yy[nas] <- seq_len(len) } y <- yy names(y) <- nm } else names(y) <- nm[!nas] y } ## MWE x <- c(10, 11, 11, 12, 12, 13) rank(x, ties.method="first") rank2(x, ties.method="last") ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel