如何使用分组变量对kableExtra中的行进行分组?

时间:2019-03-26 09:16:17

标签: r grouping kableextra

library(kableExtra)
library(tidyverse)

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

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

这是我想要实现的:

kable(tib[, 2]) %>% 
  group_rows(index = c("a" = 2, "b" = 1, "c" = 3))

但是使用30个或更多的唯一分组标识符,这很难手动完成。所以我一直在尝试一种程序化方法

我尝试使用游程编码,但无法正常工作;例如,此代码将失败:

kable(tib[, 2]) %>% 
  group_rows(rle(tib$group)[2], rle(tib$group)[1])

如果能解决此问题,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以使用简单的table

kable(tib[, 2]) %>% 
  group_rows(index = table(tib$group))

enter image description here

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

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

kable(tib2[, 2]) %>% 
  group_rows(index = table(fct_inorder(tib2$group)))

enter image description here

答案 1 :(得分:1)

group_rows()正在接受命名向量。这是一种方法:

kable(tib[, 2]) %>% 
  group_rows(index = setNames(rle(tib$group)[[1]], rle(tib$group)[[2]]))