| tabulr {Hmisc} | R Documentation |
Interface to Tabular Function
Description
tabulr is a front-end to the tables package's
tabular function so that the user can take
advantage of variable annotations used by the Hmisc package,
particular those created by the label, units, and
upData functions. When a variable appears in a
tabular function, the
variable x is found in the data argument or in the parent
environment, and the labelLatex function is used to create
a LaTeX label. By default any units of measurement are right justified
in the current LaTeX tabular field using hfill; use nofill
to list variables for which units are not right-justified with
hfill. Once the label is constructed, the variable name is
preceeded by Heading("LaTeX label")*x in the formula before it is
passed to tabular. nolabel can be used to
specify variables for which labels are ignored.
tabulr also replaces trio with table_trio, N
with table_N, and freq with table_freq in the
formula.
table_trio is a function that takes a numeric vector and computes
the three quartiles and optionally the mean and standard deviation, and
outputs a LaTeX-formatted character string representing the results. By
default, calculated statistics are formatted with 3 digits to the left
and 1 digit to the right of the decimal point. Running
table_options(left=l, right=r) will use l
and r digits instead. Other options that can be given to
table_options are prmsd=TRUE to add mean +/- standard
deviation to the result, pn=TRUE to add the sample size,
bold=TRUE to set the median in bold face, showfreq='all',
'low', 'high' used by the table_freq function, pctdec,
specifying the number of places to the right of the decimal point for
percentages (default is zero), and
npct='both','numerator','denominator','none' used by
table_formatpct to control what appears after the percent.
Option pnformat may be specified to control the formatting for
pn. The default is "(n=..)". Specify
pnformat="non" to suppress "n=". pnwhen specifies
when to print the number of observations. The default is
"always". Specify pnwhen="ifna" to include n only
if there are missing values in the vector being processed.
tabulr substitutes table_N for N in the formula.
This is used to create column headings for the number of observations,
without a row label.
table_freq analyzes a character variable to compute, for a single
output cell, the percents, numerator, and denominator for each category,
or optimally just the maximum or minimum, as specified by
table_options(showfreq).
table_formatpct is a function that formats percents depending on
settings of options in table_options.
nFm is a function that calls sprintf to format
numeric values to have a specific number of digits to the left
and to the right of the point.
table_latexdefs writes (by default) to the console a set of LaTeX
definitions that can be invoked at any point thereafter in a knitr or
sweave document by naming the macro, preceeded by a single
slash. The blfootnote macro is called with a single LaTeX
argument which will appear as a footnote without a number.
keytrio invokes blfootnote to define the output of
table_trio if mean and SD are not included. If mean and SD are
included, use keytriomsd.
Usage
tabulr(formula, data = NULL, nolabel=NULL, nofill=NULL, ...)
table_trio(x)
table_freq(x)
table_formatpct(num, den)
nFm(x, left, right, neg=FALSE, pad=FALSE, html=FALSE)
table_latexdefs(file='')
Arguments
formula |
a formula suitable for |
data |
a data frame or list. If omitted, the parent environment is assumed to contain the variables. |
nolabel |
a formula such as |
nofill |
a formula such as |
... |
other arguments to |
x |
a numeric vector |
num |
a single numerator or vector of numerators |
den |
a single denominator |
left, right |
number of places to the left and right of the decimal point, respectively |
neg |
set to |
pad |
set to |
html |
set to |
file |
location of output of |
Value
tabulr returns an object of class "tabular"
Author(s)
Frank Harrell
See Also
tabular, label,
latex, summaryM
Examples
## Not run:
n <- 400
set.seed(1)
d <- data.frame(country=factor(sample(c('US','Canada','Mexico'), n, TRUE)),
sex=factor(sample(c('Female','Male'), n, TRUE)),
age=rnorm(n, 50, 10),
sbp=rnorm(n, 120, 8))
d <- upData(d,
preghx=ifelse(sex=='Female', sample(c('No','Yes'), n, TRUE), NA),
labels=c(sbp='Systolic BP', age='Age', preghx='Pregnancy History'),
units=c(sbp='mmHg', age='years'))
contents(d)
require(tables)
invisible(booktabs()) # use booktabs LaTeX style for tabular
g <- function(x) {
x <- x[!is.na(x)]
if(length(x) == 0) return('')
paste(latexNumeric(nFm(mean(x), 3, 1)),
' \hfill{\smaller[2](', length(x), ')}', sep='')
}
tab <- tabulr((age + Heading('Females')*(sex == 'Female')*sbp)*
Heading()*g + (age + sbp)*Heading()*trio ~
Heading()*country*Heading()*sex, data=d)
# Formula after interpretation by tabulr:
# (Heading('Age\hfill {\smaller[2] years}') * age + Heading("Females")
# * (sex == "Female") * Heading('Systolic BP {\smaller[2] mmHg}') * sbp)
# * Heading() * g + (age + sbp) * Heading() * table_trio ~ Heading()
# * country * Heading() * sex
cat('\begin{landscape}\n')
cat('\begin{minipage}{\textwidth}\n')
cat('\keytrio\n')
latex(tab)
cat('\end{minipage}\end{landscape}\n')
getHdata(pbc)
pbc <- upData(pbc, moveUnits=TRUE)
# Convert to character to prevent tabular from stratifying
for(x in c('sex', 'stage', 'spiders')) {
pbc[[x]] <- as.character(pbc[[x]])
label(pbc[[x]]) <- paste(toupper(substring(x, 1, 1)), substring(x, 2), sep='')
}
table_options(pn=TRUE, showfreq='all')
tab <- tabulr((bili + albumin + protime + age) *
Heading()*trio +
(sex + stage + spiders)*Heading()*freq ~ drug, data=pbc)
latex(tab)
## End(Not run)