如何使用分组变量对 kableExtra 中的行进行分组:`pack_rows()`?

Pet*_*ter 4 grouping r kableextra

library(kableExtra)
library(tibble)
Run Code Online (Sandbox Code Playgroud)

MWE 数据集(组 = 分组变量)

tib <- tibble(group = c("a", "a", "b", "c", "c", "c"),
              var = 1:6)
Run Code Online (Sandbox Code Playgroud)

这就是我想要实现的目标:

kable(tib[, 2]) %>% 
  pack_rows(index = c("a" = 2, "b" = 1, "c" = 3))
Run Code Online (Sandbox Code Playgroud)

但是如果有 30 个或更多的唯一分组标识符,手动操作会很乏味。所以我一直在尝试一种程序化的方法

我尝试使用运行长度编码,但无法使其工作;例如,此代码失败:

kable(tib[, 2]) %>% 
  pack_rows(rle(tib$group)[2], rle(tib$group)[1])
Run Code Online (Sandbox Code Playgroud)

如果您有任何指示或建议来解决此问题,我将不胜感激。

kat*_*ath 20

您可以使用一个简单的table

kable(tib[, 2]) %>% 
  pack_rows(index = table(tib$group))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如果您的索引行不是按字母顺序排列的,您可以使用fct_inorderfrom forcats(包含在 中tidyverse)执行以下操作

tib2 <- tibble(group = c("b", "c", "c", "c", "a", "a"),
              var = 1:6)

kable(tib2[, 2]) %>% 
  pack_rows(index = table(fct_inorder(tib2$group)))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 然后你可以先使用`fct_inorder`然后应用表格,看我的编辑。 (2认同)