This function returns the "typical" value of a variable.
typical_value(x, fun = "mean", weights = NULL, ...)A variable.
Character vector, naming the function to be applied to
x. Currently, "mean", "weighted.mean",
"median" and "mode" are supported, which call the
corresponding R functions (except "mode", which calls an
internal function to compute the most common value). "zero"
simply returns 0. Note: By default, if x is a factor,
only fun = "mode" is applicable; for all other functions (including
the default, "mean") the reference level of x is returned.
For character vectors, only the mode is returned. You can use a named
vector to apply other different functions to integer, numeric and categorical
x, where factors are first converted to numeric vectors, e.g.
fun = c(numeric = "median", factor = "mean"). See 'Examples'.
Name of variable in x that indicated the vector of
weights that will be applied to weight all observations. Default is
NULL, so no weights are used.
Further arguments, passed down to fun.
The "typical" value of x.
By default, for numeric variables, typical_value() returns the
mean value of x (unless changed with the fun-argument).
For factors, the reference level is returned or the most common value
(if fun = "mode"), unless fun is a named vector. If
fun is a named vector, specify the function for integer, numeric
and categorical variables as element names, e.g.
fun = c(integer = "median", factor = "mean"). In this case,
factors are converted to numeric values (using to_value)
and the related function is applied. You may abbreviate the names
fun = c(i = "median", f = "mean"). See also 'Examples'.
For character vectors the most common value (mode) is returned.
data(iris)
typical_value(iris$Sepal.Length)
#> [1] 5.843333
library(purrr)
map(iris, ~ typical_value(.x))
#> $Sepal.Length
#> [1] 5.843333
#>
#> $Sepal.Width
#> [1] 3.057333
#>
#> $Petal.Length
#> [1] 3.758
#>
#> $Petal.Width
#> [1] 1.199333
#>
#> $Species
#> [1] "setosa"
#>
# example from ?stats::weighted.mean
wt <- c(5, 5, 4, 1) / 15
x <- c(3.7, 3.3, 3.5, 2.8)
typical_value(x, fun = "weighted.mean")
#> [1] 3.325
typical_value(x, fun = "weighted.mean", weights = wt)
#> [1] 3.453333
# for factors, return either reference level or mode value
set.seed(123)
x <- sample(iris$Species, size = 30, replace = TRUE)
typical_value(x)
#> [1] "setosa"
typical_value(x, fun = "mode")
#> [1] "versicolor"
# for factors, use a named vector to apply other functions than "mode"
map(iris, ~ typical_value(.x, fun = c(n = "median", f = "mean")))
#> $Sepal.Length
#> [1] 5.8
#>
#> $Sepal.Width
#> [1] 3
#>
#> $Petal.Length
#> [1] 4.35
#>
#> $Petal.Width
#> [1] 1.3
#>
#> $Species
#> [1] 2
#>