一次将 dplyr 函数应用于所有变量

Applying a dplyr function to all variables at once

我有一个带有数字变量(“数字”)和几个因子变量(因子 0 和 1(假,真)或 0 到 4(病理状态))的数据框。我想总结每个组(0 到 1、0 到 4)的“数字”的中位数和 IQR。

有没有一种方法可以将此函数应用于数据集中的每个因子列,而无需逐一键入变量?

`library(dplyr)
 group_by(df, othervariable) %>%
  summarise(
  count = n(),
  median = median(numeric, na.rm = TRUE),
  IQR = IQR(numeric, na.rm = TRUE)
)`

输出:

othevariable count median   IQR
      <dbl> <int>  <dbl> <dbl>
1       0   100   2.46  2.65
2       1   207   3.88  5.86    

如果您的数据集仅包含感兴趣的分组变量和 numeric,您可以使用 purrr 的函数 mapsummarise 语句应用于每个组.

library(dplyr)

purrr::map(names(df %>% select(-numeric)), function(i) {
  df %>% 
    group_by(!!sym(i)) %>% 
    summarize(
      count = n(),
      median = median(numeric, na.rm = TRUE),
      IQR = IQR(numeric, na.rm = TRUE)
    )
})

输出应该是一个数据帧列表,每个元素对应一个分组变量及其汇总结果。