Skip to contents

Creates a data frame of descriptive statistics.

Usage

descript(
  df,
  vars = NULL,
  groups = NULL,
  funs = NULL,
  drop_levels = FALSE,
  digits = getOption("digits")
)

# S3 method for class 'data.frame'
descript(
  df,
  vars = NULL,
  groups = NULL,
  funs = NULL,
  drop_levels = FALSE,
  digits = getOption("digits")
)

# S3 method for class 'group_df'
descript(
  df,
  vars = NULL,
  groups = NULL,
  funs = NULL,
  drop_levels = FALSE,
  digits = getOption("digits")
)

Arguments

df

A data frame.

vars

A character vector of variables to summarise.

groups

A character vector of variables to group by.

funs

Summary functions for variable types.

drop_levels

TRUE or FALSE. If TRUE, drops unused factor levels.

digits

An integer for the number of digits to keep for numeric variables.

Value

data.frame

See also

Examples

#----------------------------------------------------------------------------
# descript() examples.
#----------------------------------------------------------------------------
library(bkstat)

descript(mtcars, groups = c("cyl"))
#>    cyl variable  N n_missing n_unique        mean         sd         cv     min
#> 1    6      mpg  7         0        6  19.7428571  1.4535670 0.07362496  17.800
#> 2    6     disp  7         0        5 183.3142857 41.5624602 0.22672788 145.000
#> 3    6       hp  7         0        4 122.2857143 24.2604911 0.19839187 105.000
#> 4    6     drat  7         0        5   3.5857143  0.4760552 0.13276440   2.760
#> 5    6       wt  7         0        6   3.1171429  0.3563455 0.11431800   2.620
#> 6    6     qsec  7         0        7  17.9771429  1.7068657 0.09494644  15.500
#> 7    6       vs  7         0        2   0.5714286  0.5345225 0.93541435   0.000
#> 8    6       am  7         0        2   0.4285714  0.5345225 1.24721913   0.000
#> 9    6     gear  7         0        3   3.8571429  0.6900656 0.17890589   3.000
#> 10   6     carb  7         0        3   3.4285714  1.8126539 0.52869073   1.000
#> 11   4      mpg 11         0        9  26.6636364  4.5098277 0.16913776  21.400
#> 12   4     disp 11         0       11 105.1363636 26.8715937 0.25558801  71.100
#> 13   4       hp 11         0       10  82.6363636 20.9345300 0.25333315  52.000
#> 14   4     drat 11         0       10   4.0709091  0.3654711 0.08977627   3.690
#> 15   4       wt 11         0       11   2.2857273  0.5695637 0.24918271   1.513
#> 16   4     qsec 11         0       11  19.1372727  1.6824452 0.08791457  16.700
#> 17   4       vs 11         0        2   0.9090909  0.3015113 0.33166248   0.000
#> 18   4       am 11         0        2   0.7272727  0.4670994 0.64226163   0.000
#> 19   4     gear 11         0        3   4.0909091  0.5393599 0.13184353   3.000
#> 20   4     carb 11         0        2   1.5454545  0.5222330 0.33791545   1.000
#> 21   8      mpg 14         0       12  15.1000000  2.5600481 0.16953961  10.400
#> 22   8     disp 14         0       11 353.1000000 67.7713236 0.19193238 275.800
#> 23   8       hp 14         0        9 209.2142857 50.9768855 0.24365872 150.000
#> 24   8     drat 14         0       11   3.2292857  0.3723618 0.11530778   2.760
#> 25   8       wt 14         0       13   3.9992143  0.7594047 0.18988849   3.170
#> 26   8     qsec 14         0       14  16.7721429  1.1960138 0.07130954  14.500
#> 27   8       vs 14         0        1   0.0000000  0.0000000        NaN   0.000
#> 28   8       am 14         0        2   0.1428571  0.3631365 2.54195564   0.000
#> 29   8     gear 14         0        2   3.2857143  0.7262730 0.22103962   3.000
#> 30   8     carb 14         0        4   3.5000000  1.5566236 0.44474959   2.000
#>         p25     p50       p75     max
#> 1   18.6500  19.700  21.00000  21.400
#> 2  160.0000 167.600 196.30000 258.000
#> 3  110.0000 110.000 123.00000 175.000
#> 4    3.3500   3.900   3.91000   3.920
#> 5    2.8225   3.215   3.44000   3.460
#> 6   16.7400  18.300  19.17000  20.220
#> 7    0.0000   1.000   1.00000   1.000
#> 8    0.0000   0.000   1.00000   1.000
#> 9    3.5000   4.000   4.00000   5.000
#> 10   2.5000   4.000   4.00000   6.000
#> 11  22.8000  26.000  30.40000  33.900
#> 12  78.8500 108.000 120.65000 146.700
#> 13  65.5000  91.000  96.00000 113.000
#> 14   3.8100   4.080   4.16500   4.930
#> 15   1.8850   2.200   2.62250   3.190
#> 16  18.5600  18.900  19.95000  22.900
#> 17   1.0000   1.000   1.00000   1.000
#> 18   0.5000   1.000   1.00000   1.000
#> 19   4.0000   4.000   4.00000   5.000
#> 20   1.0000   2.000   2.00000   2.000
#> 21  14.4000  15.200  16.25000  19.200
#> 22 301.7500 350.500 390.00000 472.000
#> 23 176.2500 192.500 241.25000 335.000
#> 24   3.0700   3.115   3.22500   4.220
#> 25   3.5325   3.755   4.01375   5.424
#> 26  16.0975  17.175  17.55500  18.000
#> 27   0.0000   0.000   0.00000   0.000
#> 28   0.0000   0.000   0.00000   1.000
#> 29   3.0000   3.000   3.00000   5.000
#> 30   2.2500   3.500   4.00000   8.000

df <- bkdat::as_df(
list(
  group1 = factor(c("a", "a", "a", "b", "b", "b", "c", "c", "c"), levels = c("a", "b", "c")),
  group2 = factor(c("x", "y", "x", "y", "x", "y", "y", "y", "y"), levels = c("x", "y", "z")),
  group3 = c("n", "m", "n", "m", "n", "m", "m", "m", "m"),
  character1 = letters[1:9],
  numeric1 = rnorm(9),
  integer1 = sample(1:100, size = 9),
  date1 = as.Date(
    c("2018-12-01", "2018-12-02", "2018-12-03", "2018-12-04", "2018-12-05", "2018-12-06",
    "2018-12-07", "2018-12-08", "2018-12-09")
  )
)
)
groups <- c("group1", "group2")
vars <- c("character1", "numeric1", "integer1", "date1")
descript(df, vars, groups, drop_levels = TRUE)
#>    group1 group2   variable N level proportion n_missing n_unique        mean
#> 1       a      x character1 2  <NA>         NA         0        2          NA
#> 2       a      x character1 1     a  0.5000000        NA       NA          NA
#> 3       a      x character1 1     c  0.5000000        NA       NA          NA
#> 4       a      x   numeric1 2  <NA>         NA         0        2 -0.05978826
#> 5       a      x   integer1 2  <NA>         NA         0        2 49.00000000
#> 6       a      x      date1 2  <NA>         NA         0        2          NA
#> 7       a      y character1 1  <NA>         NA         0        1          NA
#> 8       a      y character1 1     b  1.0000000        NA       NA          NA
#> 9       a      y   numeric1 1  <NA>         NA         0        1  0.07345258
#> 10      a      y   integer1 1  <NA>         NA         0        1 50.00000000
#> 11      a      y      date1 1  <NA>         NA         0        1          NA
#> 12      b      y character1 2  <NA>         NA         0        2          NA
#> 13      b      y character1 1     d  0.5000000        NA       NA          NA
#> 14      b      y character1 1     f  0.5000000        NA       NA          NA
#> 15      b      y   numeric1 2  <NA>         NA         0        2 -0.47820543
#> 16      b      y   integer1 2  <NA>         NA         0        2 35.50000000
#> 17      b      y      date1 2  <NA>         NA         0        2          NA
#> 18      b      x character1 1  <NA>         NA         0        1          NA
#> 19      b      x character1 1     e  1.0000000        NA       NA          NA
#> 20      b      x   numeric1 1  <NA>         NA         0        1  0.50940262
#> 21      b      x   integer1 1  <NA>         NA         0        1 11.00000000
#> 22      b      x      date1 1  <NA>         NA         0        1          NA
#> 23      c      y character1 3  <NA>         NA         0        3          NA
#> 24      c      y character1 1     g  0.3333333        NA       NA          NA
#> 25      c      y character1 1     h  0.3333333        NA       NA          NA
#> 26      c      y character1 1     i  0.3333333        NA       NA          NA
#> 27      c      y   numeric1 3  <NA>         NA         0        3 -0.33606563
#> 28      c      y   integer1 3  <NA>         NA         0        3 54.66666667
#> 29      c      y      date1 3  <NA>         NA         0        3          NA
#>            sd          cv         min         p25         p50         p75
#> 1          NA          NA          NA          NA          NA          NA
#> 2          NA          NA          NA          NA          NA          NA
#> 3          NA          NA          NA          NA          NA          NA
#> 4   0.8915421 -14.9116588 -0.69020376 -0.37499601 -0.05978826  0.25541949
#> 5  24.0416306   0.4906455 32.00000000 40.50000000 49.00000000 57.50000000
#> 6          NA          NA          NA          NA          NA          NA
#> 7          NA          NA          NA          NA          NA          NA
#> 8          NA          NA          NA          NA          NA          NA
#> 9          NA          NA  0.07345258  0.07345258  0.07345258  0.07345258
#> 10         NA          NA 50.00000000 50.00000000 50.00000000 50.00000000
#> 11         NA          NA          NA          NA          NA          NA
#> 12         NA          NA          NA          NA          NA          NA
#> 13         NA          NA          NA          NA          NA          NA
#> 14         NA          NA          NA          NA          NA          NA
#> 15  0.3172600  -0.6634388 -0.70254216 -0.59037380 -0.47820543 -0.36603706
#> 16  2.1213203   0.0597555 34.00000000 34.75000000 35.50000000 36.25000000
#> 17         NA          NA          NA          NA          NA          NA
#> 18         NA          NA          NA          NA          NA          NA
#> 19         NA          NA          NA          NA          NA          NA
#> 20         NA          NA  0.50940262  0.50940262  0.50940262  0.50940262
#> 21         NA          NA 11.00000000 11.00000000 11.00000000 11.00000000
#> 22         NA          NA          NA          NA          NA          NA
#> 23         NA          NA          NA          NA          NA          NA
#> 24         NA          NA          NA          NA          NA          NA
#> 25         NA          NA          NA          NA          NA          NA
#> 26         NA          NA          NA          NA          NA          NA
#> 27  0.8083226  -2.4052521 -1.26685261 -0.59881276  0.06922708  0.12932786
#> 28 24.8260616   0.4541353 27.00000000 44.50000000 62.00000000 68.50000000
#> 29         NA          NA          NA          NA          NA          NA
#>            max   min_date   p25_date   p50_date   p75_date   max_date
#> 1           NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 2           NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 3           NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 4   0.57062724       <NA>       <NA>       <NA>       <NA>       <NA>
#> 5  66.00000000       <NA>       <NA>       <NA>       <NA>       <NA>
#> 6           NA 2018-12-01 2018-12-01 2018-12-02 2018-12-03 2018-12-03
#> 7           NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 8           NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 9   0.07345258       <NA>       <NA>       <NA>       <NA>       <NA>
#> 10 50.00000000       <NA>       <NA>       <NA>       <NA>       <NA>
#> 11          NA 2018-12-02 2018-12-02 2018-12-02 2018-12-02 2018-12-02
#> 12          NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 13          NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 14          NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 15 -0.25386870       <NA>       <NA>       <NA>       <NA>       <NA>
#> 16 37.00000000       <NA>       <NA>       <NA>       <NA>       <NA>
#> 17          NA 2018-12-04 2018-12-04 2018-12-05 2018-12-06 2018-12-06
#> 18          NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 19          NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 20  0.50940262       <NA>       <NA>       <NA>       <NA>       <NA>
#> 21 11.00000000       <NA>       <NA>       <NA>       <NA>       <NA>
#> 22          NA 2018-12-05 2018-12-05 2018-12-05 2018-12-05 2018-12-05
#> 23          NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 24          NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 25          NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 26          NA       <NA>       <NA>       <NA>       <NA>       <NA>
#> 27  0.18942863       <NA>       <NA>       <NA>       <NA>       <NA>
#> 28 75.00000000       <NA>       <NA>       <NA>       <NA>       <NA>
#> 29          NA 2018-12-07 2018-12-07 2018-12-08 2018-12-09 2018-12-09