3

我想采用 gt() 表并将其转换为“宽”格式,而不是按组级别的“长”格式。因此,作为使用 iris 数据集的示例:

library(dplyr)  
library(gt)  
iris %>%   
group_by(Species) %>%   
slice_max(Sepal.Length, n=5) %>%  
group_by(Species) %>%  
gt() 

这会产生:

标准 gt 输出

但是,我想要制作的是以下内容:

所需的 gt 输出

有没有办法做到这一点?

4

1 回答 1

2

我们可以通过数据重塑和gt格式化功能的组合来做到这一点。我还重新格式化了列名以删除句点并将它们放在标题大小写中。

library(tidyverse)  
library(gt)  

iris %>%   
  group_by(Species) %>%   
  slice_max(Sepal.Length, n=5) %>%   
  group_by(Species) %>% 
  mutate(row=row_number()) %>% 
  pivot_longer(-c(Species, row)) %>%
  mutate(Species = str_to_title(Species),
         name = gsub("\\.", " ", name)) %>% 
  pivot_wider(names_from=c(Species, name), values_from=value) %>% 
  select(-row) %>% 
  gt() %>% 
  tab_spanner_delim(
      delim="_"
  ) %>% 
  fmt_missing(
    columns=everything(),
    missing_text=""
  )

在此处输入图像描述

于 2021-02-05T22:37:54.383 回答