如何使用分组变量对 kableExtra 中的行进行分组:`pack_rows()`?
How to group rows in kableExtra with a grouping variable: `pack_rows()`?
library(kableExtra)
library(tibble)
MWE数据集(组=分组变量)
tib <- tibble(group = c("a", "a", "b", "c", "c", "c"),
var = 1:6)
这就是我想要实现的:
kable(tib[, 2]) %>%
pack_rows(index = c("a" = 2, "b" = 1, "c" = 3))
但是,如果有 30 个或更多的唯一分组标识符,手动操作会很乏味。所以我一直在尝试一种程序化的方法
我尝试使用 运行 长度编码但无法正常工作;例如,此代码失败:
kable(tib[, 2]) %>%
pack_rows(rle(tib$group)[2], rle(tib$group)[1])
对于解决此问题的任何指示或建议,我将不胜感激。
group_rows()
正在接受命名向量。这是一种方法:
kable(tib[, 2]) %>%
group_rows(index = setNames(rle(tib$group)[[1]], rle(tib$group)[[2]]))
您可以使用简单的 table
:
kable(tib[, 2]) %>%
pack_rows(index = table(tib$group))
如果您的索引行不是按字母顺序排列的,您可以使用 forcats
中的 fct_inorder
(包含在 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)))
library(kableExtra)
library(tibble)
MWE数据集(组=分组变量)
tib <- tibble(group = c("a", "a", "b", "c", "c", "c"),
var = 1:6)
这就是我想要实现的:
kable(tib[, 2]) %>%
pack_rows(index = c("a" = 2, "b" = 1, "c" = 3))
但是,如果有 30 个或更多的唯一分组标识符,手动操作会很乏味。所以我一直在尝试一种程序化的方法
我尝试使用 运行 长度编码但无法正常工作;例如,此代码失败:
kable(tib[, 2]) %>%
pack_rows(rle(tib$group)[2], rle(tib$group)[1])
对于解决此问题的任何指示或建议,我将不胜感激。
group_rows()
正在接受命名向量。这是一种方法:
kable(tib[, 2]) %>%
group_rows(index = setNames(rle(tib$group)[[1]], rle(tib$group)[[2]]))
您可以使用简单的 table
:
kable(tib[, 2]) %>%
pack_rows(index = table(tib$group))
如果您的索引行不是按字母顺序排列的,您可以使用 forcats
中的 fct_inorder
(包含在 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)))