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])
如果能解决此问题,我将不胜感激。
答案 0 :(得分:2)
您可以使用简单的table
:
kable(tib[, 2]) %>%
group_rows(index = table(tib$group))
如果索引行不是按字母顺序排列的,则可以使用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)))
答案 1 :(得分:1)
group_rows()
正在接受命名向量。这是一种方法:
kable(tib[, 2]) %>%
group_rows(index = setNames(rle(tib$group)[[1]], rle(tib$group)[[2]]))