如何调整kable()输出表格的因子水平打印顺序
kable输出表格的行顺序完全继承传入数据框的行顺序,你原有代码未生效的原因是:summarize()分组统计时会默认按分组变量的字符字典序排列输出行,green的首字母顺序在red之前,所以汇总后默认green行在前,你后续仅修改var1的因子水平、没有重排数据框行,因此输出顺序不变。
可通过以下两种常用方法调整:
方法1:分组前提前指定因子水平
summarize()会自动按因子的自定义水平顺序排列汇总行,适合后续还要用该因子做其他分析的场景:
var1 <- sample(c("red", "green"), 100, replace = T) var2 <- rnorm(100) df <- data.frame(var1, var2) library(tidyverse) library(knitr) df %>% mutate(var1 = fct_relevel(var1, "red", "green")) %>% # 先调整因子水平再分组 group_by(var1) %>% summarize(avg = mean(var2)) %>% kable()
方法2:汇总后手动重排行
无需修改因子属性,仅针对表格输出调整顺序,适合临时调整输出的场景:
var1 <- sample(c("red", "green"), 100, replace = T) var2 <- rnorm(100) df <- data.frame(var1, var2) library(tidyverse) library(knitr) df %>% group_by(var1) %>% summarize(avg = mean(var2)) %>% arrange(factor(var1, levels = c("red", "green"))) %>% # 按指定顺序重排行 kable()
内容的提问来源于stack exchange,提问作者spindoctor
相关产品推荐
相关产品推荐

