如何构建双向 table 总结 R 中的第三个变量(kable 包)
How to build a two-way table summarizing a third variable in R (kable package)
我正在使用 RMarkdown 并尝试使用 kable 包。我有一个三变量数据框:性别(因子)、age_group(因子)和test_score(比例)。我想创建双向 tables,其中因子变量(性别和 age_groups)作为 table 行和列,test_scores 的汇总统计数据作为单元格内容.这些汇总统计数据是均值、标准差和百分位数(中位数、第 1 个十分位数、第 9 个十分位数和第 99 个百分位数)。有没有一种简单的方法可以以漂亮的方式构建这些 tables(比如使用 kable 包),而不需要先将所有这些值输入到矩阵中?我搜索了 kable 帮助文件,但找不到如何操作。
# How my data looks like:
gender <- rep(c(rep(c("M", "F"), each=3)), times=3)
age <- as.factor(rep(seq(10,12, 1), each=6))
score <- c(4,6,8,4,8,9,6,6,9,7,10,13,8,9,13,12,14,16)
testdata <-data.frame(gender,age,score)
| gender | age | score |
|--------|-----|-------|
| M | 10 | 4 |
| M | 10 | 6 |
| M | 10 | 8 |
| F | 10 | 4 |
| F | 10 | 8 |
| F | 10 | 9 |
| M | 11 | 6 |
| M | 11 | 6 |
| M | 11 | 9 |
| F | 11 | 7 |
| F | 11 | 10 |
| F | 11 | 13 |
| M | 12 | 8 |
| M | 12 | 9 |
| M | 12 | 13 |
| F | 12 | 12 |
| F | 12 | 14 |
| F | 12 | 16 |
我想要一个如下所示的 table(但直接从我的数据集计算并且具有漂亮的发布格式):
Mean score by gender & age
| | 10yo | 11yo | 12yo | Total |
|--------|:----:|:----:|:----:|:-----:|
| Male | 6 | 7 | 10 | 7.7 |
| Female | 7 | 10 | 14 | 10.3 |
| Total | 6.5 | 88.5 | 12 | 9 |
我尝试使用 kable 包,它确实为我提供了一些漂亮的 tables(格式很好),但我只能用它产生频率 tables。但是我在其中找不到任何参数来选择变量摘要。如果有人建议使用更好的软件包来构建如上所述的 table,我将不胜感激。
kable(data, "latex", booktabs = T) %>%
kable_styling(latex_options = "striped")
如果没有可重现的示例,可以使用 tables::tabular()
函数创建包含各种统计信息的多路 tables。
这是来自 tables
文档第 38 页的示例,它说明了 table 中的多个变量,它打印均值和标准差。
set.seed(1206)
q <- data.frame(p = rep(c("A","B"),each = 10,len = 30),
a = rep(c(1,2,3),each = 10),
id = seq(30),
b = round(runif(30,10,20)),
c = round(runif(30,40,70)))
library(tables)
tab <- tabular((Factor(p)*Factor(a)+1) ~ (N = 1) + (b + c) * (mean + sd),
data = q)
tab[ tab[,1] > 0, ]
Whosebug 友好版本的输出是:
b c
p a N mean sd mean sd
A 1 10 14.40 3.026 55.70 6.447
3 10 14.50 2.877 52.80 8.954
B 2 10 14.40 2.836 56.30 7.889
All 30 14.43 2.812 54.93 7.714
>
可以使用 html()
函数将 table 渲染为 HTML。当在 HTML 浏览器中呈现时,以下代码的输出如下图所示。
html(tab[ tab[,1] > 0, ])
tables
包括计算其他统计数据(包括分位数)的功能。有关分位数计算的详细信息,请参阅 tables package manual 的第 29 - 30 页。
该软件包还适用于 knitr
、kable
和 kableExtra
。
我正在使用 RMarkdown 并尝试使用 kable 包。我有一个三变量数据框:性别(因子)、age_group(因子)和test_score(比例)。我想创建双向 tables,其中因子变量(性别和 age_groups)作为 table 行和列,test_scores 的汇总统计数据作为单元格内容.这些汇总统计数据是均值、标准差和百分位数(中位数、第 1 个十分位数、第 9 个十分位数和第 99 个百分位数)。有没有一种简单的方法可以以漂亮的方式构建这些 tables(比如使用 kable 包),而不需要先将所有这些值输入到矩阵中?我搜索了 kable 帮助文件,但找不到如何操作。
# How my data looks like:
gender <- rep(c(rep(c("M", "F"), each=3)), times=3)
age <- as.factor(rep(seq(10,12, 1), each=6))
score <- c(4,6,8,4,8,9,6,6,9,7,10,13,8,9,13,12,14,16)
testdata <-data.frame(gender,age,score)
| gender | age | score |
|--------|-----|-------|
| M | 10 | 4 |
| M | 10 | 6 |
| M | 10 | 8 |
| F | 10 | 4 |
| F | 10 | 8 |
| F | 10 | 9 |
| M | 11 | 6 |
| M | 11 | 6 |
| M | 11 | 9 |
| F | 11 | 7 |
| F | 11 | 10 |
| F | 11 | 13 |
| M | 12 | 8 |
| M | 12 | 9 |
| M | 12 | 13 |
| F | 12 | 12 |
| F | 12 | 14 |
| F | 12 | 16 |
我想要一个如下所示的 table(但直接从我的数据集计算并且具有漂亮的发布格式):
Mean score by gender & age
| | 10yo | 11yo | 12yo | Total |
|--------|:----:|:----:|:----:|:-----:|
| Male | 6 | 7 | 10 | 7.7 |
| Female | 7 | 10 | 14 | 10.3 |
| Total | 6.5 | 88.5 | 12 | 9 |
我尝试使用 kable 包,它确实为我提供了一些漂亮的 tables(格式很好),但我只能用它产生频率 tables。但是我在其中找不到任何参数来选择变量摘要。如果有人建议使用更好的软件包来构建如上所述的 table,我将不胜感激。
kable(data, "latex", booktabs = T) %>%
kable_styling(latex_options = "striped")
如果没有可重现的示例,可以使用 tables::tabular()
函数创建包含各种统计信息的多路 tables。
这是来自 tables
文档第 38 页的示例,它说明了 table 中的多个变量,它打印均值和标准差。
set.seed(1206)
q <- data.frame(p = rep(c("A","B"),each = 10,len = 30),
a = rep(c(1,2,3),each = 10),
id = seq(30),
b = round(runif(30,10,20)),
c = round(runif(30,40,70)))
library(tables)
tab <- tabular((Factor(p)*Factor(a)+1) ~ (N = 1) + (b + c) * (mean + sd),
data = q)
tab[ tab[,1] > 0, ]
Whosebug 友好版本的输出是:
b c
p a N mean sd mean sd
A 1 10 14.40 3.026 55.70 6.447
3 10 14.50 2.877 52.80 8.954
B 2 10 14.40 2.836 56.30 7.889
All 30 14.43 2.812 54.93 7.714
>
可以使用 html()
函数将 table 渲染为 HTML。当在 HTML 浏览器中呈现时,以下代码的输出如下图所示。
html(tab[ tab[,1] > 0, ])
tables
包括计算其他统计数据(包括分位数)的功能。有关分位数计算的详细信息,请参阅 tables package manual 的第 29 - 30 页。
该软件包还适用于 knitr
、kable
和 kableExtra
。