This function provides a wrapper around table1::table1 that allows it to create a column for P-values and perform the appropriate statistical tests. It also adds functionality for captions and table numbering.

make_table1(df, group, ..., negative_label = "No", caption, table_num)

Arguments

df

a dataframe

group

a group to split the columns by. Must be a logical or a factor with two levels.

...

a list of columns to be included in the table

negative_label

a word to prepend to the label of the negative group (see example)

caption

an optional caption

table_num

an optional table number

Value

an HTML table

Details

Currently only works if you intend to split by the variable group, which must be a logical or a factor with two levels.

Examples

diamonds <- ggplot2::diamonds diamonds$expensive <- diamonds$price > 500 Hmisc::label(diamonds$depth) <- "Depth" Hmisc::label(diamonds$table) <- "Table" Hmisc::label(diamonds$price) <- "Price" Hmisc::label(diamonds$clarity) <- "Clarity" Hmisc::label(diamonds$cut) <- "Cut" Hmisc::label(diamonds$expensive) <- "Expensive" diamonds %>% make_table1(group = expensive, depth, clarity, cut, negative_label = "Not")
#> <table class="Rtable1"> #> <thead> #> <tr> #> <th class='rowlabel firstrow lastrow'></th> #> <th class='firstrow lastrow'><span class='stratlabel'>Expensive<br><span class='stratn'>(N=52191)</span></span></th> #> <th class='firstrow lastrow'><span class='stratlabel'>Not expensive<br><span class='stratn'>(N=1749)</span></span></th> #> <th class='firstrow lastrow'>P-value</th> #> </tr> #> </thead> #> <tbody> #> <tr> #> <td class='rowlabel firstrow'>Depth</td> #> <td class='firstrow'></td> #> <td class='firstrow'></td> #> <td class='firstrow'></td> #> </tr> #> <tr> #> <td class='rowlabel'>Mean (SD)</td> #> <td>61.7 (1.44)</td> #> <td>61.8 (1.26)</td> #> <td>0.033</td> #> </tr> #> <tr> #> <td class='rowlabel lastrow'>Median [Min, Max]</td> #> <td class='lastrow'>61.8 [43.0, 79.0]</td> #> <td class='lastrow'>62.0 [55.2, 66.4]</td> #> <td class='lastrow'></td> #> </tr> #> <tr> #> <td class='rowlabel firstrow'>Clarity</td> #> <td class='firstrow'></td> #> <td class='firstrow'></td> #> <td class='firstrow'></td> #> </tr> #> <tr> #> <td class='rowlabel'>I1</td> #> <td>728 (1.4%)</td> #> <td>13 (0.7%)</td> #> <td>&lt;0.01</td> #> </tr> #> <tr> #> <td class='rowlabel'>SI2</td> #> <td>8890 (17.0%)</td> #> <td>304 (17.4%)</td> #> <td></td> #> </tr> #> <tr> #> <td class='rowlabel'>SI1</td> #> <td>12579 (24.1%)</td> #> <td>486 (27.8%)</td> #> <td></td> #> </tr> #> <tr> #> <td class='rowlabel'>VS2</td> #> <td>11878 (22.8%)</td> #> <td>380 (21.7%)</td> #> <td></td> #> </tr> #> <tr> #> <td class='rowlabel'>VS1</td> #> <td>7843 (15.0%)</td> #> <td>328 (18.8%)</td> #> <td></td> #> </tr> #> <tr> #> <td class='rowlabel'>VVS2</td> #> <td>4931 (9.4%)</td> #> <td>135 (7.7%)</td> #> <td></td> #> </tr> #> <tr> #> <td class='rowlabel'>VVS1</td> #> <td>3560 (6.8%)</td> #> <td>95 (5.4%)</td> #> <td></td> #> </tr> #> <tr> #> <td class='rowlabel lastrow'>IF</td> #> <td class='lastrow'>1782 (3.4%)</td> #> <td class='lastrow'>8 (0.5%)</td> #> <td class='lastrow'></td> #> </tr> #> <tr> #> <td class='rowlabel firstrow'>Cut</td> #> <td class='firstrow'></td> #> <td class='firstrow'></td> #> <td class='firstrow'></td> #> </tr> #> <tr> #> <td class='rowlabel'>Fair</td> #> <td>1603 (3.1%)</td> #> <td>7 (0.4%)</td> #> <td>&lt;0.01</td> #> </tr> #> <tr> #> <td class='rowlabel'>Good</td> #> <td>4676 (9.0%)</td> #> <td>230 (13.2%)</td> #> <td></td> #> </tr> #> <tr> #> <td class='rowlabel'>Very Good</td> #> <td>11420 (21.9%)</td> #> <td>662 (37.9%)</td> #> <td></td> #> </tr> #> <tr> #> <td class='rowlabel'>Premium</td> #> <td>13573 (26.0%)</td> #> <td>218 (12.5%)</td> #> <td></td> #> </tr> #> <tr> #> <td class='rowlabel lastrow'>Ideal</td> #> <td class='lastrow'>20919 (40.1%)</td> #> <td class='lastrow'>632 (36.1%)</td> #> <td class='lastrow'></td> #> </tr> #> </tbody> #> </table>