【问题标题】:How do I change the order of factor levels printed for kable()?如何更改为 kable() 打印的因子级别的顺序?
【发布时间】:2021-08-29 01:11:13
【问题描述】:

在我想要的输出中,红色的结果将在绿色的结果之前打印。具体来说,如何更改在 kable(或类似)表中打印的因子级别的顺序?

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)) %>% 
  mutate(var1=fct_relevel(var1, "red", "green")) %>% 
  kable()

【问题讨论】:

标签: r tidyverse knitr forcats


【解决方案1】:

只需使用 arrange 按您的 var1 对数据框进行排序

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)) %>% 
  mutate(var1=fct_relevel(var1, "red", "green")) %>% 
  arrange(var1) %>% # Arranges the data frame by this variable
  kable()

|var1  |        avg|
|:-----|----------:|
|red   |  0.0999524|
|green | -0.0378017|

【讨论】:

  • 这不起作用,因为我的具体情况需要按一些非数字量对因子水平进行排序。这似乎是 kable 的限制。
  • 在这种情况下,@Ronak Shah 链接的问题中提供的答案会更好地为您服务
  • 不,这实际上可行。安排() 函数实际上按照mutate(fct_relevel) 命令中设置的因子级别的顺序对数据帧进行排序。它工作得很好。我更喜欢这个答案,因为它完全基于tidyverse 谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 2014-02-11
  • 2013-01-16
  • 2011-01-23
  • 1970-01-01
相关资源
最近更新 更多