如何使用分组变量对kableExtra中的行进行分组?
MWE数据集(组=分组变量) 但是,对于30个或更多的唯一分组标识符,手动执行此操作非常繁琐。所以我一直在试验一种程序化的方法 我尝试使用运行长度编码,但无法使其工作;例如,此代码失败:如何使用分组变量对kableExtra中的行进行分组?,r,grouping,kableextra,R,Grouping,Kableextra,MWE数据集(组=分组变量) 但是,对于30个或更多的唯一分组标识符,手动执行此操作非常繁琐。所以我一直在试验一种程序化的方法 我尝试使用运行长度编码,但无法使其工作;例如,此代码失败: kable(tib[, 2]) %>% pack_rows(index = c("a" = 2, "b" = 1, "c" = 3)) 如果您能给我一些建议或建议来解决这个问题,我将不胜感激。group\u rows()正在接受一个命名向
kable(tib[, 2]) %>%
pack_rows(index = c("a" = 2, "b" = 1, "c" = 3))
如果您能给我一些建议或建议来解决这个问题,我将不胜感激。group\u rows()
正在接受一个命名向量。这里有一个方法:
kable(tib[, 2]) %>%
pack_rows(rle(tib$group)[2], rle(tib$group)[1])
您可以使用一个简单的
表
:
kable(tib[, 2]) %>%
group_rows(index = setNames(rle(tib$group)[[1]], rle(tib$group)[[2]]))
如果您的索引行不是按字母顺序排列的,您可以使用fct\u按顺序执行以下操作forcats
(包含在tidyverse
中)
tib2%
打包行(索引=表(fct inorder(tib2$group)))
也许是您的另一种选择?谢谢!!这为我解决了问题。完美。此方法仅在分组变量按字母或数字顺序排列时有效,例如,如果tib$group,则您可以先使用fct\u inorder
,然后应用该表,请参见我的编辑。@kath有没有办法对多列执行此操作?
kable(tib[, 2]) %>%
pack_rows(rle(tib$group)[2], rle(tib$group)[1])
kable(tib[, 2]) %>%
group_rows(index = setNames(rle(tib$group)[[1]], rle(tib$group)[[2]]))
kable(tib[, 2]) %>%
pack_rows(index = table(tib$group))
tib2 <- tibble(group = c("b", "c", "c", "c", "a", "a"),
var = 1:6)
kable(tib2[, 2]) %>%
pack_rows(index = table(fct_inorder(tib2$group)))