Можно ли gtsummary::tbl_summary
вычислить среднее значение, исключая выбросы? Например, в следующем коде я представляю образцы данных некоторых z-показателей. Можно ли указать что или добавить пункт, как gtsummary::tbl_summary
обрабатывает каждый столбец?
set.seed(42)
n <- 1000
dat <- data.frame(id=1:n,
treat = factor(sample(c('Treat','Control'), n, rep=TRUE, prob=c(.5, .5))),
outcome1=runif (n, min=-3.6, max=2.3),
outcome2=runif (n, min=-1.9, max=3.3),
outcome3=runif (n, min=-2.5, max=2.8),
outcome4=runif (n, min=-3.1, max=2.2))
dat %>% select(-c(id)) %>% tbl_summary(by=treat, statistic = list(all_continuous() ~ "{mean} ({min} to {max})"))
Например, предположим, я хочу, чтобы в таблице отображалось среднее значение outcome1
только в случаях, когда outcome1 >= -2.9
и для outcome2
только в случаях outcome2 < 3.0
и т. д.
Заранее большое спасибо за любое предложенное руководство.
Вы можете определить новую функцию среднего, которая исключает выбросы значений. Вы можете определить выброс любым удобным для вас способом. Затем передайте эту функцию tbl_summary()
. Пример ниже!
library(gtsummary)
packageVersion("gtsummary")
#> [1] '1.5.2'
set.seed(42)
n <- 1000
dat <- data.frame(id=1:n,
treat = factor(sample(c('Treat','Control'), n, rep=TRUE, prob=c(.5, .5))),
outcome1=runif (n, min=-3.6, max=2.3),
outcome2=runif (n, min=-1.9, max=3.3),
outcome3=runif (n, min=-2.5, max=2.8),
outcome4=runif (n, min=-3.1, max=2.2))
mean_no_extreme <- function(x) {
x <- na.omit(x)
sd <- sd(x)
mean <- mean(x)
# calculate mean excluding extremes
mean(x[x >= mean - sd * 3 & x <= mean + sd * 3])
}
dat %>%
select(-c(id)) %>%
tbl_summary(
by=treat,
statistic = all_continuous() ~ "{mean_no_extreme} ({min} to {max})"
) %>%
as_kable()
Характерная черта | Контроль, N = 527 | Рассматривать, N = 473 |
---|---|---|
результат1 | -0,64 (от -3,59 до 2,30) | -0,70 (от -3,60 до 2,30) |
результат2 | 0,68 (от -1,89 до 3,30) | 0,78 (от -1,87 до 3,28) |
результат3 | 0,20 (от -2,47 до 2,80) | 0,23 (от -2,48 до 2,80) |
результат4 | -0,36 (от -3,09 до 2,19) | -0,41 (от -3,10 до 2,20) |
Created on 2022-03-22 by the reprex package (v2.0.1)
Привет @Daniel D. Sjoberg, в дополнение к приведенному выше коду, возможно ли иметь 95% CI для вызова all_continuous()
?
спасибо за ваше решение! Всегда такой услужливый и элегантный