Nothing
#' Arrange a data frame and rank indexes.
#'
#' @param .data data.frame
#' @param ... force later arguments to bind by name.
#' @param arrangeTerms character vector of column expressions to arrange by.
#' @param orderColumn character name of column to add in-group order marks to.
#' @return .data with order indices added (no ties).
#'
#' @examples
#'
#'
#' datasets::mtcars %.>%
#' # tibble::rownames_to_column() not currently re-exported by dplyr
#' mutate_se(., "CarName" := "rownames(.)" ) %.>%
#' select_se(., c('CarName', 'hp', 'wt')) %.>%
#' add_rank_indices(., arrangeTerms = c('desc(hp)', 'wt'),
#' orderColumn = 'rankID') %.>%
#' arrange_se(., 'rankID')
#'
#'
#' @export
#'
add_rank_indices <- function(.data,
...,
arrangeTerms = NULL,
orderColumn) {
if(length(list(...))>0) {
stop("seplyr::add_rank_indices unexpected arguments")
}
if(!(is.data.frame(.data) || dplyr::is.tbl(.data))) {
stop("seplyr::add_rank_indices first argument must be a data.frame or tbl")
}
`:=` <- NULL # don't let look like an unbound reference to CRAN checker
if(length(arrangeTerms)<=0) {
arrangeTerms <- colnames(.data)
}
if(!is.character(arrangeTerms)) {
stop("seplyr::add_rank_indices arrangeTerms should be length 0, or charcter vector")
}
# from: https://github.com/tidyverse/rlang/issues/116
# updated: https://github.com/WinVector/seplyr/issues/3
env <- parent.frame()
arrangeQ <- lapply(arrangeTerms,
function(si) {
rlang::parse_quo(si,
env = env)
})
.data <- dplyr::arrange(.data, !!!arrangeQ)
# add ordered row-ids globally
d <- dplyr::mutate(.data, !!orderColumn := 1 )
d <- dplyr::mutate(d, !!orderColumn := cumsum(!!rlang::sym(orderColumn)) )
d
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.