【发布时间】:2021-10-01 20:52:54
【问题描述】:
考虑这个data 需要summary 在多个变量上测量mean 和sd,
# Create grouping var; ####
mtcars <- mtcars %>% mutate(
am = case_when(
am == 0 ~ "Automatic",
TRUE ~ "Manual"
)
)
使用以下自定义function 和purrr,我可以创建一个baseline table,
# Summarising function; ####
sum_foo <- function(data, var) {
data %>%
group_by(am) %>%
summarise(
mean = mean( !!sym(var) , na.rm = TRUE),
sd = sd( !!sym(var) , na.rm = TRUE)
) %>%
mutate(across(where(is.double), round, 2)) %>%
group_by(am) %>%
transmute(
value = paste(mean, "(±", sd, ")", sep = ""),
variable = var
) %>%
pivot_wider(
names_from = "am"
)
}
# Execute Function; ####
sum_variables <- c("mpg", "hp", "disp")
sum_variables %>% map(
sum_foo,
data = mtcars
) %>% reduce(
bind_rows
)
这给出了以下output,
# A tibble: 3 x 3
variable Automatic Manual
<chr> <chr> <chr>
1 mpg 17.15(±3.83) 24.39(±6.17)
2 hp 160.26(±53.91) 126.85(±84.06)
3 disp 290.38(±110.17) 143.53(±87.2)
我想在不使用map 和reduce 的情况下获得output,即。无需使用 rowwise 或 map 遍历变量。
我正在寻找替代方案 tidyverse-solution!
【问题讨论】:
-
map 和 reduce 来自 purrr,它是 tidyverse 的一部分,那么这不是一个整洁的解决方案吗?