我想采用 gt() 表并将其转换为“宽”格式,而不是按组级别的“长”格式。因此,作为使用 iris 数据集的示例:
library(dplyr)
library(gt)
iris %>%
group_by(Species) %>%
slice_max(Sepal.Length, n=5) %>%
group_by(Species) %>%
gt()
这会产生:
但是,我想要制作的是以下内容:
有没有办法做到这一点?
我们可以通过数据重塑和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=""
)