R: Change reference level of (numeric) factors

ref_lvl {sjmisc} | R Documentation

## Change reference level of (numeric) factors

### Description

Changes the reference level of (numeric) factor.

### Usage

    ref_lvl(x, ..., lvl = NULL)

### Arguments

`x` | A vector or data frame.
`...` | Optional, unquoted names of variables that should be selected for further processing. Required, if `x` is a data frame (and no vector) and only selected variables from `x` should be processed. You may also use functions like `:` or tidyselect's `select_helpers`. See 'Examples' or package-vignette.
`lvl` | Eiher numeric, indicating the new reference level, or a string, indicating the value label from the new reference level. If `x` is a factor with non-numeric factor levels, `relevel(x, ref = lvl)` is returned. See 'Examples'.

### Details

Unlike `relevel`, this function behaves differently for factor with numeric factor levels or for labelled data, i.e. factors with value labels for the values. `ref_lvl()` changes the reference level by recoding the factor's values using the `rec` function. Hence, all values from lowest up to the reference level indicated by `lvl` are recoded, with `lvl` starting as lowest factor value. For factors with non-numeric factor levels, the function simply returns `relevel(x, ref = lvl)`. See 'Examples'.

### Value

`x` with new reference level. If `x` is a data frame, the complete data frame `x` will be returned, where variables specified in `...` will be re-leveled; if `...` is not specified, applies to all variables in the data frame.

### See Also

`to_factor` to convert numeric vectors into factors; `rec` to recode variables.

### Examples

    data(efc)
    x <- to_factor(efc$e42dep)
    str(x)
    frq(x)

    # see column "val" in frq()-output, which indicates
    # how values/labels were recoded after using ref_lvl()
    x <- ref_lvl(x, lvl = 3)
    str(x)
    frq(x)

    library(dplyr)
    dat <- efc %>%
      select(c82cop1, c83cop2, c84cop3) %>%
      to_factor()

    frq(dat)
    ref_lvl(dat, c82cop1, c83cop2, lvl = 2) %>% frq()

    # compare numeric and string value for "lvl"-argument
    x <- to_factor(efc$e42dep)
    frq(x)
    ref_lvl(x, lvl = 2) %>% frq()
    ref_lvl(x, lvl = "slightly dependent") %>% frq()

    # factors with non-numeric factor levels
    data(iris)
    levels(iris$Species)
    levels(ref_lvl(iris$Species, lvl = 3))
    levels(ref_lvl(iris$Species, lvl = "versicolor"))

[Package sjmisc version 2.7.5 Index]