R: Reorder factor levels by sorting along another variable

fct_reorder {forcats} | R Documentation

## Reorder factor levels by sorting along another variable

### Description

`fct_reorder()` is useful for 1d displays where the factor is mapped to position; `fct_reorder2()` for 2d displays where the factor is mapped to a non-position aesthetic. `last2()` is a helper for `fct_reorder2()`; it finds the last value of `y` when sorted by `x`.

### Usage

    fct_reorder(.f, .x, .fun = median, ..., .desc = FALSE)

    fct_reorder2(.f, .x, .y, .fun = last2, ..., .desc = TRUE)

    last2(.x, .y)

### Arguments

`.f` | A factor (or character vector).
`.x, .y` | The levels of `f` are reordered so that the values of `.fun(.x)` (for `fct_reorder()`) and `fun(.x, .y)` (for `fct_reorder2()`) are in ascending order.
`.fun` | n summary function. It should take one vector for `fct_reorder`, and two vectors for `fct_reorder2`.
`...` | Other arguments passed on to `.fun`. A common argument is `na.rm = TRUE`.
`.desc` | Order in descending order? Note the default is different between `fct_reorder` and `fct_reorder2`, in order to match the default ordering of factors in the legend.

### Examples

    boxplot(Sepal.Width ~ Species, data = iris)
    boxplot(Sepal.Width ~ fct_reorder(Species, Sepal.Width), data = iris)
    boxplot(Sepal.Width ~ fct_reorder(Species, Sepal.Width, .desc = TRUE), data = iris)

    chks <- subset(ChickWeight, as.integer(Chick) < 10)
    chks <- transform(chks, Chick = fct_shuffle(Chick))

    if (require("ggplot2")) {
    ggplot(chks, aes(Time, weight, colour = Chick)) +
      geom_point() +
      geom_line()

    # Note that lines match order in legend
    ggplot(chks, aes(Time, weight, colour = fct_reorder2(Chick, Time, weight))) +
      geom_point() +
      geom_line() +
      labs(colour = "Chick")
    }

[Package forcats version 0.3.0 Index]