如何使用 compareGroups 包显示中位数?
How to display median with compareGroups package?
我有这个代码:
data("ToothGrowth")
res<-compareGroups(supp~len, data = ToothGrowth)
restab<-createTable(res, show.p.overall = FALSE, extra.labels=c("","",""))
print(restab, which.table = "descr")
它给了我这个输出(带有均值和标准差):
--------Summary descriptives table by 'supp'---------
______________________________________
OJ VC
N=30 N=30
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
len, Mean (SD) 20.7 (6.61) 17.0 (8.27)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
问题:如何让它也输出中位数?我需要 html 平均中位数和标准差格式的分组摘要。
您会考虑使用 dplyr 而不是 compareGroups 的解决方案吗?您可以添加任何您想要的统计信息。
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
您可以使用包 knitr 将结果(或任何数据帧)格式化为 HTML table。您可以在 kable
帮助文件中找到格式化选项;附加包 kableExtra 让您做更多事情。
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>
我有这个代码:
data("ToothGrowth")
res<-compareGroups(supp~len, data = ToothGrowth)
restab<-createTable(res, show.p.overall = FALSE, extra.labels=c("","",""))
print(restab, which.table = "descr")
它给了我这个输出(带有均值和标准差):
--------Summary descriptives table by 'supp'---------
______________________________________
OJ VC
N=30 N=30
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
len, Mean (SD) 20.7 (6.61) 17.0 (8.27)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
问题:如何让它也输出中位数?我需要 html 平均中位数和标准差格式的分组摘要。
您会考虑使用 dplyr 而不是 compareGroups 的解决方案吗?您可以添加任何您想要的统计信息。
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
您可以使用包 knitr 将结果(或任何数据帧)格式化为 HTML table。您可以在 kable
帮助文件中找到格式化选项;附加包 kableExtra 让您做更多事情。
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>