首页 > 解决方案 > 如何在 R 中创建包含合并行的表

问题描述

是否有一个 R 包可以让我生成这样的表格 -

在此处输入图像描述

我正在使用 excel 来显示我想要的输出。我以 mtcars 数据集为例。在这里,我将碳水化合物尺寸分为小、中和大,并按这些尺寸显示计数和平均 mpg。我一直在探索 gt 包,但仍在努力生产这样的东西。我从教程中看到的是 gt 表可以在每个组下方添加汇总行,但是我想将汇总(计数、平均值等)添加为列,而不是每个组下方的行。

最后,当我尝试使用 mtcars 数据集复制上面链接中的教程时,出现以下错误 -

Error in rlang::eval_tidy(expr = var_expr, data = data_tbl, env = emptyenv()) : object mean.mpg not found

这是我的代码 -

mtcars %>% 
  select(mpg, carb) %>% 
  mutate(size = case_when(
    carb %in% c(1, 2) ~ "Large",
    carb %in% c(4, 4) ~ "Medium",
    TRUE ~ "Small"
  )) %>% 
  group_by(carb, size) %>% 
  summarise(count = n(),
            mean.mpg = mean(mpg)) %>% 
  ungroup() %>% 
  gt(groupname_col = "size") %>% 
  summary_rows(groups = T, 
               columns = mean.mpg,
               fns = list(
                 average = "mean"
               ))

我很感激任何帮助。

标签: rgt

解决方案


如果您在新列名周围加上引号,则在运行 gt Version: 0.2.2 的 R 4.04 中不会出现错误,因此请尝试:columns = 'mean.mpg'。从@lag_rat_kid 评论和我们的共同经验来看,我猜这种不合理之处在更新版本的 pkg:gt 中得到了纠正。

 #quit current session; restart
 install.packages("gt")
 library(gt); library(dplyr)
 # your code now succeeds

尽管我对其进行了一些修改以修复“中等”案例定义中的错误

我使用 Rstudio 导出为 PNG 文件,对它创建的大小感到震惊...... 1.8 MB,所以我保存为 jpg 文件,然后在将其包含在此处之前重新保存为 PNG 文件)。然后我采用了另存为jpg文件的做法,然后用图像查看程序将其转换为上传到这里。

如果您从分组中删除“卡片”列,做一些不同的标签并且不包括摘要行(您已经计算过),您会更接近您的愿望:

my_gt_tbl <- mtcars %>%
select(mpg, carb) %>%
mutate(size = case_when(
carb %in% c(1, 2) ~ "Large = 1,2",
carb %in% c(3, 4) ~ "Medium = 3,4",
TRUE ~ "Small = 6,8"
)) %>%
group_by(size) %>%
summarise(count = n(),
mean.mpg = mean(mpg))  %>%
gt(groupname_col = "size") 
my_gt_tbl

在此处输入图像描述


推荐阅读