我想采用 gt() 表并将其转换为“宽”格式,而不是按组级别的“长”格式。因此,以使用 iris 数据集为例:
library(dplyr)
library(gt)
iris %>%
group_by(Species) %>%
slice_max(Sepal.Length, n=5) %>%
group_by(Species) %>%
gt()
Run Code Online (Sandbox Code Playgroud)
这会产生:

但是,我想要生成的是以下内容:

有没有办法做到这一点?
我们可以通过数据重塑和格式化功能的组合来做到这一点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=""
)
Run Code Online (Sandbox Code Playgroud)