R数据框格式化:如何将长格式转换为宽格式?

6

我希望将一个 “long” 格式的 gt() 表格按照分组级别转换为 “wide” 格式。以 iris 数据集为例:

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

这会产生以下结果:

标准输出

然而,我想要生成以下内容:

期望输出

有没有办法做到这一点?

你是将输出放入shiny还是markdown文件中?通过创建两个表格并在输出中以列的形式并排放置,可能会有一个解决方法。 - Susan Switzer
@SusanSwitzer 我打算将表格作为图片放在PowerPoint幻灯片中。 - igutierrez
1个回答

5
我们可以通过数据重塑和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=""
  )

enter image description here


有没有办法在这些不同的跨度组之间画一条竖线? - Amroco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接