Compute summary statistics for one or multiple numeric variables.
Arguments
- data
a data frame
- ...
(optional) One or more unquoted expressions (or variable names) separated by commas. Used to select a variable of interest. If no variable is specified, then the summary statistics of all numeric variables in the data frame is computed.
- type
type of summary statistics. Possible values include:
"full", "common", "robust", "five_number", "mean_sd", "mean_se", "mean_ci", "median_iqr", "median_mad", "quantile", "mean", "median", "min", "max"- show
a character vector specifying the summary statistics you want to show. Example:
show = c("n", "mean", "sd"). This is used to filter the output after computation. It can additionally include"skewness"and/or"kurtosis"(e.g.show = c("mean", "sd", "skewness", "kurtosis")); these two are computed on demand and are not part of any defaulttype.- probs
numeric vector of probabilities with values in [0,1]. Used only when type = "quantile".
- digits
integer indicating the number of decimal places to round the summary statistics to. Default is 3. Increase it when summarizing very small values that would otherwise round to 0.
Value
A data frame containing descriptive statistics, such as:
n: the number of individuals
min: minimum
max: maximum
median: median
mean: mean
q1, q3: the first and the third quartile, respectively.
iqr: interquartile range
mad: median absolute deviation (see ?MAD)
sd: standard deviation of the mean
se: standard error of the mean
ci: 95 percent confidence interval of the mean
When requested through show, the output can also contain:
skewness: bias-corrected sample skewness
kurtosis: bias-corrected sample excess kurtosis (0 for a normal distribution).
Both use the type-2 (bias-corrected) estimator, matching
e1071 with type = 2:
skewness \(= g_1\sqrt{n(n-1)}/(n-2)\) and kurtosis \(= [(n+1)g_2 + 6]
(n-1)/[(n-2)(n-3)]\), where \(g_1 = m_3/m_2^{1.5}\) and \(g_2 =
m_4/m_2^2 - 3\). Skewness is NA for n < 3 and kurtosis for n < 4.
See also
rstatix-programming for selecting columns by names held
in strings (!!, {{ }}, vars=, all_of()).
Examples
# Full summary statistics
data("ToothGrowth")
ToothGrowth %>% get_summary_stats(len)
#> # A tibble: 1 × 13
#> variable n min max median q1 q3 iqr mad mean sd se
#> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 len 60 4.2 33.9 19.2 13.1 25.3 12.2 9.04 18.8 7.65 0.988
#> # ℹ 1 more variable: ci <dbl>
# Summary statistics of grouped data
# Show only common summary
ToothGrowth %>%
group_by(dose, supp) %>%
get_summary_stats(len, type = "common")
#> # A tibble: 6 × 12
#> supp dose variable n min max median iqr mean sd se ci
#> <fct> <dbl> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 OJ 0.5 len 10 8.2 21.5 12.2 6.48 13.2 4.46 1.41 3.19
#> 2 VC 0.5 len 10 4.2 11.5 7.15 4.95 7.98 2.75 0.869 1.96
#> 3 OJ 1 len 10 14.5 27.3 23.4 5.35 22.7 3.91 1.24 2.80
#> 4 VC 1 len 10 13.6 22.5 16.5 2.02 16.8 2.52 0.795 1.80
#> 5 OJ 2 len 10 22.4 30.9 26.0 2.5 26.1 2.66 0.84 1.90
#> 6 VC 2 len 10 18.5 33.9 26.0 5.42 26.1 4.80 1.52 3.43
# Robust summary statistics
ToothGrowth %>% get_summary_stats(len, type = "robust")
#> # A tibble: 1 × 4
#> variable n median iqr
#> <fct> <dbl> <dbl> <dbl>
#> 1 len 60 19.2 12.2
# Five number summary statistics
ToothGrowth %>% get_summary_stats(len, type = "five_number")
#> # A tibble: 1 × 7
#> variable n min max q1 median q3
#> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 len 60 4.2 33.9 13.1 19.2 25.3
# Compute only mean and sd
ToothGrowth %>% get_summary_stats(len, type = "mean_sd")
#> # A tibble: 1 × 4
#> variable n mean sd
#> <fct> <dbl> <dbl> <dbl>
#> 1 len 60 18.8 7.65
# Compute full summary statistics but show only mean, sd, median, iqr
ToothGrowth %>%
get_summary_stats(len, show = c("mean", "sd", "median", "iqr"))
#> # A tibble: 1 × 6
#> variable n mean sd median iqr
#> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 len 60 18.8 7.65 19.2 12.2
# Include skewness and kurtosis (computed on demand via show)
ToothGrowth %>%
get_summary_stats(len, show = c("mean", "sd", "skewness", "kurtosis"))
#> # A tibble: 1 × 6
#> variable n mean sd skewness kurtosis
#> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 len 60 18.8 7.65 -0.15 -0.955