R: Create Table One Describing Baseline Characteristics

TOne {DescTools} | R Documentation

## Create Table One Describing Baseline Characteristics

### Description

Create a table summarizing continuous, categorical and dichotomous variables, optionally stratified by one or more variables, while performing adequate statistical tests.

### Usage

    TOne(x, grp = NA, add.length = TRUE, colnames = NULL, vnames = NULL, total = TRUE,
         align = "\\l", FUN = NULL, TEST = NULL, intref = "high",
         fmt.pval = as.fmt(fmt = "*", na.form = "   "))

### Arguments

`x` | a data.frame containing all the variables to be included in the table.
`grp` | the grouping variable.
`add.length` | logical. If set to `TRUE` (default), a row with the lengths of the group will be inserted as first row of the table.
`colnames` | a vector of columnnames for the result table.
`vnames` | a vector of variablenames to be placed in the first column instead of the real names.
`total` | logical, `TRUE` if totals should be added.
`align` | the character on whose position the strings will be aligned. Left alignment can be requested by setting `sep = "\\l"`, right alignment by `"\\r"` and center alignment by `"\\c"`. Mind the backslashes, as if they are omitted, strings would be aligned to the character l, r or c respectively. Default value is `"\\l"`, thus left alignment.
`FUN` | the function to be used as location and dispersion measure (typically `mean`/`sd` or alternatively `median`/`IQR`). See examples.
`TEST` | a list of functions to be used to test the variables. Must be named as "num", "cat" and "dich" and be defined as function with arguments `(x, g)`, generating something similar to a p.value. (See examples.)
`intref` | one out of `"high"` (default) or `"low"`, defining which value of a dichotomous numeric or logical variable should be reported. Usually this will be `1` or `TRUE`. Setting it to `"low"` will report the lower value `0` or `FALSE`.
`fmt.pval` | format code or function for the p-values of the tests, default is `as.fmt(fmt="p", na.form=" ")`

### Details

There are three types of variables currently implemented: numeric, factor and variables with only two levels.

### Value

a character matrix

### Author(s)

Andri Signorell <andri@signorell.net>

### See Also

`WrdTable`

### Examples

    opt <- DescToolsOptions()

    # define some special formats for count data, percentages and numeric results
    # (those will be supported by TOne)
    Fmt(abs=as.fmt(digits=0, big.mark="'"))
    Fmt(per=as.fmt(digits=1, fmt="%"))
    Fmt(num=as.fmt(digits=1, big.mark="'"))

    TOne(x = d.pizza[, c("temperature","delivery_min","driver","wine_ordered")],
         grp=d.pizza$quality)

    # define median/IQR as describing functions for the numeric variables
    TOne(iris[, -5], iris[, 5],
      FUN = function(x) gettextf("%s / %s",
             Format(median(x, na.rm=TRUE), digits=1),
             Format(IQR(x, na.rm=TRUE), digits=3))
    )

    # replace kruskal.test by ANOVA and report the p.value
    # Change tests for all the types
    TOne(x = iris[, -5], grp = iris[, 5],
         FUN = function(x) gettextf("%s / %s",
                Format(mean(x, na.rm=TRUE), digits=1),
                Format(sd(x, na.rm=TRUE), digits=3)),

         TEST=list(num=list(fun=function(x, g){summary(aov(x ~ g))[[1]][1, "Pr(>F)"]},
                            lbl="ANOVA"),
                   cat=list(fun=function(x, g){chisq.test(table(x, g))$p.val},
                            lbl="Chi-Square test"),
                   dich=list(fun=function(x, g){fisher.test(table(x, g))$p.val},
                             lbl="Fisher exact test")),
         fmt.pval = as.fmt(fmt="p", na.form="   ")
    )

    # dichotomous integer or logical values can be reported by the high or low value
    x <- sample(x = c(0,1), size = 100, prob = c(0.3, 0.7), replace = TRUE)
    y <- sample(x = c(0,1), size = 100, prob = c(0.3, 0.7), replace = TRUE)==1
    z <- factor(sample(x = c(0,1), size = 100, prob = c(0.3, 0.7), replace = TRUE))
    g <- sample(x = letters[1:4], size = 100, replace = TRUE)
    d.set <- data.frame(x=x, y=y, z=z, g=g)

    TOne(d.set[1:3], d.set$g, intref = "low")
    TOne(d.set[1:3], d.set$g, intref = "high")

    # intref would not control factors, use relevel to change reported value
    TOne(data.frame(z=relevel(z, "1")), g)
    TOne(data.frame(z=z), g)

    options(opt)

    ## Not run:   --  Send the whole stuff to Word

    wrd <- GetNewWrd()
    ToWrd(TOne(x = d.pizza[, c("temperature","delivery_min","driver","wine_ordered")],
               grp=d.pizza$quality))

    ## End(Not run)

[Package DescTools version 0.99.32 Index]