R: Create a Factor Variable Using the Quantiles of a Continuous...

CutQ {DescTools} | R Documentation

## Create a Factor Variable Using the Quantiles of a Continuous Variable

### Description

Create a factor variable using the quantiles of a continous variable.

### Usage

    CutQ(x, breaks = quantile(x, seq(0, 1, by = 0.25), na.rm = TRUE),
         labels = NULL, na.rm = FALSE, ...)

### Arguments

`x` | continous variable.
`breaks` | the breaks for creating groups. By default the quartiles will be used, say `quantile` `seq(0, 1, by = 0.25)` quantiles. See `quantile` for details.
`labels` | labels for the levels of the resulting category. By default, labels are defined as `Q1`, `Q2` to the length of breaks - 1. The parameter ist passed to `cut`, so if `labels` are set to `FALSE`, simple integer codes are returned instead of a factor.
`na.rm` | Boolean indicating whether missing values should be removed when computing quantiles. Defaults to TRUE.
`...` | Optional arguments passed to `cut`.

### Details

This function uses `quantile` to obtain the specified quantiles of `x`, then calls `cut` to create a factor variable using the intervals specified by these quantiles.

It properly handles cases where more than one quantile obtains the same value, as in the second example below. Note that in this case, there will be fewer generated factor levels than the specified number of quantile intervals.

### Value

Factor variable with one level for each quantile interval given by `q`.

### Author(s)

Gregory R. Warnes <greg@warnes.net>, some slight modifications Andri Signorell <andri@signorell.net>

### See Also

`cut`, `quantile`

### Examples

    # create example data

    x <- rnorm(1000)

    # cut into quartiles
    quartiles <- CutQ(x)
    table(quartiles)

    # cut into deciles
    deciles <- CutQ(x, seq(0, 1, by=0.1), labels=NULL)
    table(deciles)

    # show handling of 'tied' quantiles.
    x <- round(x)  # discretize to create ties
    stem(x)        # display the ties
    deciles <- CutQ( x, seq(0, 1, by=0.1) )

    table(deciles) # note that there are only 5 groups (not 10)
                   # due to duplicates

[Package DescTools version 0.99.25 Index]