R: Frequency Table for a Single Variable

Freq {DescTools} | R Documentation

## Frequency Table for a Single Variable

### Description

Calculates absolute and relative frequencies of a vector x. Continuous (numeric) variables will be cut using the same logic as used by the function `hist`. Categorical variables will be aggregated by `table`. The result will contain single and cumulative frequencies for both, absolute values and percentages.

### Usage

    Freq(x, breaks = hist(x, plot = FALSE)$breaks, include.lowest = TRUE,
         ord = c("level", "desc", "asc", "name"),
         useNA = c("no", "ifany", "always"), ...)

    ## S3 method for class 'Freq'
    print(x, digits = NULL, ...)

### Arguments

`x` | the variable to be described, can be any atomic type.
`breaks` | either a numeric vector of two or more cut points or a single number (greater than or equal to 2) giving the number of intervals into which x is to be cut. Default taken from the function `hist()`. This is ignored if x is not of numeric type.
`include.lowest` | logical, indicating if an x[i] equal to the lowest (or highest, for `right = FALSE`) `"breaks"` value should be included. Ignored if x is not of numeric type.
`ord` | how should the result be ordered? Default is `"level"`, other choices are 'by frequency' (`"descending"` or `"ascending"`) or 'by name of the levels' (`"name"`). The argument can be abbreviated. This is ignored if x is numeric.
`useNA` | one out of `"no"`, `"ifany"`, `"always"`. Defines whether to include extra `NA` levels in the table. Defaults to `"no"` which is the `table()` default too.
`digits` | integer, determining the number of digits used to format the relative frequencies.
`...` | further arguments are passed to the function `cut()`. Use `dig.lab` to control the format of numeric group names. Use the argument `right` to define if the intervals should be closed on the right (and open on the left) or vice versa. In `print.Freq` the dots are not used.

### Details

If `breaks` is specified as a single number, the range of the data is divided into breaks pieces of equal length, and then the outer limits are moved away by 0.1% of the range to ensure that the extreme values both fall within the break intervals. (If `x` is a constant vector, equal-length intervals are created that cover the single value.)

### Value

an object of type `"Freq"`, which is basically a data.frame with 5 columns (earning a specific print routine), containing the following components:

`level` | factor. The levels of the grouping variable.
`freq` | integer. The absolute frequencies.
`perc` | numeric. The relative frequencies (percent).
`cumfreq` | integer. The cumulative sum of the absolute frequencies.
`cumperc` | numeric. The cumulative sum of the relative frequencies.

### Author(s)

Andri Signorell <andri@signorell.net>

### See Also

`PercTable`, `cut`, `hist`, `cumsum`, `table`, `prop.table`

### Examples

    data(d.pizza)

    # result is a data.frame
    d.freq <- Freq(d.pizza$price)
    d.freq

    # it is printed by default with 3 digits for the percent values,
    # but the number of digits can be defined in the print function
    print(d.freq, digits=5)

    # sorted by frequency
    Freq(d.pizza$driver, ord="desc")

    # sorted by name, including NAs
    Freq(d.pizza$driver, ord="name", useNA="ifany")

    # percentages and cumulative frequencies for a vector of count data
    Freq(as.table(c(2,4,12,8)))

[Package DescTools version 0.99.38 Index]