首页 > 解决方案 > 更宽的枢轴 - 创建两个级别的标题以获得更好的可读性

问题描述

有六个回归模型。我使用了更宽的枢轴,但很难阅读。我可以使用两级标题 -

library(dplyr)

regression <- c(rep("A", 3), rep("B", 3), rep("C", 3), rep("D", 3), rep("E", 3), rep("F", 3))
attribute <- rep(c("b0", "b1", "b2"), 6)
estimate <- round(runif(n = 18, min = 0, max = 10), 2)
tstat <- round(runif(n = 18, min = 0, max = 10), 2)

# tibble
tbl <- tibble(regression, attribute, estimate, tstat)

# pivot wider
tbl <- tbl %>% 
  pivot_wider(names_from = regression,
              values_from = c("estimate", "tstat"))

标签: rdplyr

解决方案


一种选择separate_header来自ftExtra

library(ftExtra)
library(dplyr)
library(tidyr)
library(stringr)
tbl %>% 
     pivot_wider(names_from = regression,
                 values_from = c("estimate", "tstat")) %>% 
     rename_with(~ str_replace(., "(.*)_(.*)", "\\2_\\1"), -1) %>%
     as_flextable() %>%
     separate_header()

-输出

在此处输入图像描述


或者可以使用span_header

library(flextable)
tbl %>%  
  pivot_wider(names_from = regression,
              values_from = c("estimate", "tstat")) %>%   
  rename_with(~ str_replace(., "(.*)_(.*)", "\\2_\\1"), -1) %>% 
  select(attribute, order(str_remove(names(.)[-1], "_.*")) + 1) %>% 
  as_flextable() %>% 
  span_header()  %>% 
  align(align = "center", part = "all")

-输出 在此处输入图像描述


如果我们需要将某些列加粗

tbl %>%  
    pivot_wider(names_from = regression,
                values_from = c("estimate", "tstat")) %>%   
    rename_with(~ str_replace(., "(.*)_(.*)", "\\2_\\1"), -1) %>% 
    mutate(across(ends_with('tstat'),  ~sprintf('**%.2f**', .))) %>% 
    select(attribute, order(str_remove(names(.)[-1], "_.*")) + 1) %>% 
    as_flextable() %>% 
    span_header()  %>% 
    align(align = "center", part = "all") %>% 
    colformat_md()

-输出

在此处输入图像描述


推荐阅读