## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup--------------------------------------------------------------------
library(rank)

## -----------------------------------------------------------------------------
fruits <- c("Apple", "Orange", "Apple", "Pear", "Orange")

# rank alphabetically
smartrank(fruits)

# rank based on frequency
smartrank(fruits, sort_by = "frequency")

# rank based on descending order of frequency
smartrank(fruits, sort_by = "frequency", desc = TRUE)

## -----------------------------------------------------------------------------
# rank numerically
smartrank(c(1, 3, 2))

# rank numerically based on descending order
smartrank(c(1, 3, 2), desc = TRUE)

## -----------------------------------------------------------------------------
fruits <- c("Apple", "Orange", "Apple", "Pear", "Orange")
ranks <- smartrank(fruits, sort_by = "frequency")
fruits[order(ranks)]

## -----------------------------------------------------------------------------
data = data.frame(
    fruits = c("Apple", "Orange", "Apple", "Pear", "Orange"),
    picker = c("Elizabeth", "Damian",  "Bob", "Cameron", "Alice")
)

# Rank fruits so the most frequently picked fruits will come first
fruit_ranks <- smartrank(data$fruits, sort_by = "frequency", desc=TRUE) 


# Rank pickers in alphabetical order
picker_ranks <- smartrank(data$picker, sort_by = "alphabetical", desc=FALSE) 

# Sort dataframe by the fruit_ranks, then the picker_ranks (hierarchical)
data[order(fruit_ranks, picker_ranks),]

## -----------------------------------------------------------------------------
library(dplyr)

arrange(
  data, 
  smartrank(fruits, "frequency", desc = TRUE), 
  smartrank(picker, "alphabetical", desc = FALSE)
)