# freq: Univariate Frequency Table In quest: Prepare Questionnaire Data for Analysis

## Description

`freq` creates univariate frequency tables similar to `table`. It differs from `table` by allowing for custom sorting by something other than the alphanumerics of the unique values as well as returning an atomic vector rather than a 1D-array.

## Usage

 ```1 2 3 4 5 6 7 8 9``` ```freq( x, exclude = if (useNA == "no") c(NA, NaN), useNA = "always", prop = FALSE, sort = "frequency", decreasing = TRUE, na.last = TRUE ) ```

## Arguments

 `x` atomic vector `exclude` unique values of `x` to exclude from the returned table. If NULL, then missing values are always included in the returned table. See `table` for documentation on the same argument. `useNA` character vector of length 1 specifying how to handle missing values (i.e., whether to include NA as an element in the returned table). There are three options: 1) "no" = don't include missing values in the table, 2) "ifany" = include missing values if there are any, 3) "always" = include missing values in the table, regardless of whether there are any or not. See `table` for documentation on the same argument. `prop` logical vector of length 1 specifying whether the returned table should include counts (FALSE) or proportions (TRUE). If NAs are excluded (e.g., useNA = "no" or exclude = c(NA, NaN)), then the proportions will be based on the number of observed elements. `sort` character vector of length 1 specifying how the returned table will be sorted. There are three options: 1) "frequency" = the frequency of the unique values in `x`, 2) "position" = the position when each unique value first appears in `x`, 3) "alphanum" = alphanumeric ordering of the unique values in `x` (the sorting used by `table`). When "frequency" is specified and there are ties, then the ties are sorted alphanumerically. `decreasing` logical vector of length 1 specifying whether the table should be sorted in decreasing (TRUE) or increasing (FALSE) order. `na.last` logical vector of length 1 specifying whether the table should have NAs last or in whatever position they end up at. This argument is only relevant if NAs exist in `x` and are included in the table (e.g., useNA = "always" or exclude = NULL).

## Details

The name for the table element giving the frequency of missing values is "(NA)". This is different from `table` where the name is `NA_character_`. This change allows for the sorting of tables that include missing values, as subsetting in R is not possible with `NA_character_` names. In future versions of the package, this might change as it should be possible to avoid this issue by subetting with a logical vector or integer indices instead of names. However, it is convenient to be able to subset the return object fully by names.

## Value

numeric vector of frequencies as either counts (if `prop` = FALSE) or proportions (if `prop` = TRUE) with the unique values of `x` as names (missing values have name = "(NA)"). Note, this is different from `table`, which returns a 1D-array and has class "table".

`freqs` `freq_by` `freqs_by` `table`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24``` ```freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = FALSE, sort = "frequency", decreasing = TRUE, na.last = TRUE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = FALSE, sort = "frequency", decreasing = TRUE, na.last = FALSE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = TRUE, sort = "frequency", decreasing = FALSE, na.last = TRUE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = TRUE, sort = "frequency", decreasing = FALSE, na.last = FALSE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = FALSE, sort = "position", decreasing = TRUE, na.last = TRUE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = FALSE, sort = "position", decreasing = TRUE, na.last = FALSE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = TRUE, sort = "position", decreasing = FALSE, na.last = TRUE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = TRUE, sort = "position", decreasing = FALSE, na.last = FALSE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = FALSE, sort = "alphanum", decreasing = TRUE, na.last = TRUE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = FALSE, sort = "alphanum", decreasing = TRUE, na.last = FALSE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = TRUE, sort = "alphanum", decreasing = FALSE, na.last = TRUE) freq(c(mtcars\$"carb", NA, NA, mtcars\$"gear"), prop = TRUE, sort = "alphanum", decreasing = FALSE, na.last = FALSE) ```