如何构建一个双向表,汇总R(kable包)中的第三个变量

如何构建一个双向表,汇总R(kable包)中的第三个变量,r,cell,summary,kable,kableextra,R,Cell,Summary,Kable,Kableextra,我正在与RMarkdown合作,并尝试使用kable软件包。我有一个三变量的数据框架:性别(因子)、年龄组(因子)和测试分数(量表)。我想创建双向表,其中因子变量(性别和年龄组)作为表的行和列,测试分数的汇总统计信息作为单元格内容。这些汇总统计数据包括平均值、标准偏差和百分位数(中位数、第1个百分位数、第9个百分位数和第99个百分位数)。有没有一种简单的方法可以以漂亮的方式构建这些表(如使用kable软件包),而无需首先将所有这些值输入到矩阵中?我搜索了kable帮助文件,但找不到如何操作 #

我正在与RMarkdown合作,并尝试使用kable软件包。我有一个三变量的数据框架:性别(因子)、年龄组(因子)和测试分数(量表)。我想创建双向表,其中因子变量(性别和年龄组)作为表的行和列,测试分数的汇总统计信息作为单元格内容。这些汇总统计数据包括平均值、标准偏差和百分位数(中位数、第1个百分位数、第9个百分位数和第99个百分位数)。有没有一种简单的方法可以以漂亮的方式构建这些表(如使用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    |
我尝试使用kable包,它确实为我提供了一些漂亮的表(格式很好),但我只能用它生成频率表。但我找不到任何论据来选择变量摘要。如果有人建议使用更好的软件包来构建如上所述的表,我将不胜感激

kable(data, "latex", booktabs = T) %>%
   kable_styling(latex_options = "striped")

如果没有可复制的示例,可以使用
tables::tabular()
函数创建包含各种统计信息的多路表

以下是
表格
文档第38页中的一个示例,该示例说明了表格中的多个变量,打印了平均值和标准偏差

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, ]
可以使用
HTML()
函数将表呈现为HTML。在HTML浏览器中呈现时,以下代码的输出如下图所示

html(tab[ tab[,1] > 0, ])

表格
包括计算其他统计数据(包括分位数)的功能。有关分位数计算的详细信息,请参见本手册第29-30页


该软件包还可与
knitr
kable
kableExtra
配合使用

是否希望每个汇总统计信息都有一个表?还是每个单元格中的所有数据?第二个选项看起来像是一张凌乱的桌子。你好,LuizZ,欢迎来到Stackoverflow。请阅读并更新您的问题。如果您提供一个可复制的示例,其中包括您的数据子集、您已经尝试过的代码以及对所需结果的解释,您将获得更好、更快的帮助。您好,Thomas和Len,谢谢您的反馈。我会尝试用一个可复制的例子来更新我的问题,包括我数据的一个虚构子集。非常感谢你的回答,Len!我要找的正是这种类型的桌子。我已经投票认为你的答案是有用的,但是因为我在这里的“低声誉”,我的投票没有出现!
          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(tab[ tab[,1] > 0, ])