在 tbl_summary 中按行添加平均值(数值变量)的列

Add column in tbl_summary with mean (numeric variable) by rows

我是 R 的新手,非常感谢您在以下方面的帮助。我正在使用 tbl_summary 函数使用 gtsummary 包制作 table:

install.packages("gtsummary")
library(gtsummary)
library(dplyr)

data(mtcars)
df <- mtcars %>% select(cyl, hp)
tbl_summary(df)

结果 table 显示气缸组 (4、6、8) 的 n(%) 以及 hp 的中值 (IQR)。我还没有足够的信誉点数来嵌入图像,但这里是 link 可以看到 table:[1]:https://i.stack.imgur.com/Whvz6.png

我的问题是:如何添加一个 附加 列,其中包含按行组(即,圆柱子级别)的平均 hp,而不是将总 hp 作为一行包含在内?我试图将可自定义的 add_stat 参数添加到 tbl_summary 但未能获得所需的结果。

如果我需要澄清我的问题,请告诉我。预先感谢您的帮助。

有几种方法可以解决这个问题。一种方法是使用 add_stat().

library(gtsummary)

fn_add_mean <- function(data, variable, ...) {
  data %>%
    dplyr::group_by(.data[[variable]]) %>%
    dplyr::arrange(.data[[variable]]) %>%
    dplyr::summarise(hp = mean(hp, na.rm = TRUE)) %>%
    select(hp) %>%
    mutate(hp = style_sigfig(hp))
}
fn_add_mean(mtcars, "cyl")
#> # A tibble: 3 x 1
#>   hp   
#>   <chr>
#> 1 83   
#> 2 122  
#> 3 209

tbl <-
  mtcars %>%
  select(hp, cyl, gear) %>%
  tbl_summary(
    include  = -hp,
    type = everything() ~ "categorical"
  ) %>%
  add_stat(
    all_categorical() ~ fn_add_mean,
    location = all_categorical() ~  "level"
  ) %>%
  modify_header(hp ~ "**Mean Horsepower**")

reprex package (v2.0.0)

创建于 2021-07-31