I have this code:
data("ToothGrowth")
res<-compareGroups(supp~len, data = ToothGrowth)
restab<-createTable(res, show.p.overall = FALSE, extra.labels=c("","",""))
print(restab, which.table = "descr")
It gives me this output (with mean and standard deviation):
--------Summary descriptives table by 'supp'---------
______________________________________
OJ VC
N=30 N=30
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
len, Mean (SD) 20.7 (6.61) 17.0 (8.27)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Question: How to make it also output median? I need by group summary in html format of mean median and standard deviation.
Would you consider a solution with dplyr rather than compareGroups? You can add any statistic you want.
library(dplyr)
data("ToothGrowth")
df<-ToothGrowth %>%
group_by(supp) %>%
summarize(mean = mean(len),
median = median(len),
sd = sd(len),
count = n())
df
# # A tibble: 2 x 5
# supp mean median sd count
# <fct> <dbl> <dbl> <dbl> <int>
# 1 OJ 20.7 22.7 6.61 30
# 2 VC 17.0 16.5 8.27 30
You can format the result (or any dataframe) as an HTML table with the package knitr. You'll find formatting options in the kable
help file; the add-on package kableExtra lets you do a lot more.
knitr::kable(df, format = "html", digits = 2)
# <table>
# <thead>
# <tr>
# <th style="text-align:left;"> supp </th>
# <th style="text-align:right;"> mean </th>
# <th style="text-align:right;"> median </th>
# <th style="text-align:right;"> sd </th>
# <th style="text-align:right;"> count </th>
# </tr>
# </thead>
# <tbody>
# <tr>
# <td style="text-align:left;"> OJ </td>
# <td style="text-align:right;"> 20.66333 </td>
# <td style="text-align:right;"> 22.7 </td>
# <td style="text-align:right;"> 6.605561 </td>
# <td style="text-align:right;"> 30 </td>
# </tr>
# <tr>
# <td style="text-align:left;"> VC </td>
# <td style="text-align:right;"> 16.96333 </td>
# <td style="text-align:right;"> 16.5 </td>
# <td style="text-align:right;"> 8.266029 </td>
# <td style="text-align:right;"> 30 </td>
# </tr>
# </tbody>
# </table>
# > kable(df, format = "html", digits = 2)
# <table>
# <thead>
# <tr>
# <th style="text-align:left;"> supp </th>
# <th style="text-align:right;"> mean </th>
# <th style="text-align:right;"> median </th>
# <th style="text-align:right;"> sd </th>
# <th style="text-align:right;"> count </th>
# </tr>
# </thead>
# <tbody>
# <tr>
# <td style="text-align:left;"> OJ </td>
# <td style="text-align:right;"> 20.66 </td>
# <td style="text-align:right;"> 22.7 </td>
# <td style="text-align:right;"> 6.61 </td>
# <td style="text-align:right;"> 30 </td>
# </tr>
# <tr>
# <td style="text-align:left;"> VC </td>
# <td style="text-align:right;"> 16.96 </td>
# <td style="text-align:right;"> 16.5 </td>
# <td style="text-align:right;"> 8.27 </td>
# <td style="text-align:right;"> 30 </td>
# </tr>
# </tbody>
# </table>