Contains four main functions (i.e., four pieces of furniture): table1() which produces a well-formatted table of descriptive statistics common as Table 1 in research articles, tableC() which produces a well-formatted table of correlations, tableF() which provides frequency counts, and washer() which is helpful in cleaning up the data. These furniture-themed functions are designed to simplify common tasks in quantitative analysis. Other data summary and cleaning tools are also available.
Added the option to have a total column in
table1() even when using a grouping variable (
total = TRUE will activate this option). The resulting tests (if
test = TRUE) will give results of just the bivariate comparisons (grouping variable with the specified variable).
Small bug where a warning message was printed too often was fixed.
A minor update to fix an error that occurred when only a single variable was being summarized. Some code formatting under the hood was adjusted and some minor adjustments to the documentations were also made. Also, a warning is produced if any of the variables have no variability since this causes problems with tests and other formatting. Finally, a message is printed for
test = TRUE when the variances are assumed to be unequal (based on a test). This is communicated in the documentation.
table1(), it no longer returns the data frame. This feature caused too many unexpected issues. Instead, it returns the table.
table1is now no longer tied to the
data.frame, for printing purposes. It is still possible to coerce to a
var_namesargument is now deprecated. In its place, it is recommended to name the variable in place (e.g.,
"General Health" = gen_healthwill produce the label
General Healthin the table instead of the variable name of
output = "latex2".
mutate_rowsums()to more easily get the rowmeans/rowsums of a larger list of variables using the syntax that can be used within
var30in the data frame).
Mainly bug fixes, including the removal of any empty rows. This allows for more accurate counts for the n's in really messy data. We also now re-export the pipe from
Updates to the
"latex2" output option for
tableC() where it now produces a character vector of the output and then uses a print method to produce the Latex ready code. This means you can access the object and make changes to the table before having it print. It also outputs
na.rm=FALSE. Thanks to Joshua Pritikin for the ideas and the pull requests leading to these improvements.
Other minor bug fixes.
%xt% is now deprecated.
tableX() effectively do what
%xt% was designed to do, but with better and more thorough output.
Minor changes and two new functions:
rowmeans()provides a tidyverse friendly
rowsums()provides a tidyverse friendly
Several new features were added:
table1()can take a
grouped_dffrom the tidyverse's
group_by(). This also means
table1()can take on any number of stratifying variables in a clean way.
table1()also has a new 'latex2' output option. This is not dependent on
knitr::kable()and is better suited for this situation. Should provide better latex tables than before.
tableF()is a new function that provides frequency tables (potentially by a grouping variable).
A new function was added:
tableC(), which, like
table1() provides a nicely formatted table. However,
tableC() provides correlations instead of the descriptive statistics that
table1() focuses on.
We are also deprecating the
var_names argument in
table1() since it is now possible to name the variable from within the function itself without relying on a separate argument.
Other small bug fixes.
There are three notable changes in this update:
long()function has been added to the package. It is a wrapper of the
stats::reshape()function with a direction set to "long", but has added benefits, including a bit cleaner syntax, the ability to handle unbalanced data, and works well with the tidyverse.
wide()function has been added as well. It, like
long(), is a wrapper of
reshape()but with a set direction of "wide" and has added benefits as well.
table1() now has the ability to apply any function to numeric variables that the user supplies (all functions that work with
tapply() should work with
table1(). Other than that, the changes are mainly internal changes in
table1() that have bearing on a few arguments.
allargument is no longer used).
pipingis not longer used as an argument.
roundingis no longer used given a user can define their own function with their own rounding limits.
test_typeis no longer an argument. The functionality of the
"or"option was just not being used and was too cumbersome.
simpleare combined into one
typeargument (defaults are still the same).
output_typeis now just
tableM() was removed from the package. It is easily adopted by
table1() with small modifications to the
splitby variable. I apologize for any inconvenience these changes cause. However, I believe it is best in the long run and will make using and upgrading the package much easier.
As an aside, most of these changes are due to a manuscript in review about the package. Several beneficial suggestions were made and so we made those changes at the cost of a small headache at first.
Three big changes:
simple_table1is no longer with us. The functionality has been integrated into
table1has a "condensed" version that leaves less white space and is more in line with some academic journals.
table1which allows only the percentages (instead of counts and percentages) for categorical variables.
tableMis a new function that can analyze a missing data by putting a variable with missingness in the "missing_var" argument.
Three notable changes:
tableM--has been added to the package. It produces a table much like
table1but analyzes a variable with missingness.
table1(and its related functions such as
tableM) now has better formatting and has an additional option
output_type = "text2"which provides lines to separate the header from the rest of the table.
table1can give percentages based on the row using
row_wise = TRUE. The default is giving percentages by column.
Also, a bug fix:
table1was rounding the percentages at the ten's place instead of the tenth's place. It now is fixed.
A bug that rounded the percentages to the nearest tenth place was found and fixed for both
An error was found when using
table1 with a splitby factor with more than 2 levels. This has been fixed in version 1.2.2.
There were also two notable inclusions:
table1you can now format the numbers in the output with a comma for large numbers (e.g., 20,000 vs. 20000).
table1you can also calculate percentages of factor variables across rows instead of within groups.
simple_table1that reports the percentages of factors instead of counts and percentages.
None of these changes will break programs already in place using this package.
We are excited to announce that we are updating our
furniture package from 1.0.1 to 1.2.0. We included a new operator (
%xt%) for simple cross tabulations that includes a chi-square test and some data from NHANES 2005-2010. Although these additions are nice, most of the updates were to
table1. These included:
knitr::kablecan do plus the regular "text" option)
None of these changes will break programs already in place using this package. Instead, there are additional uses of the functions as shown in points 3 and 4.