一次将 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
的函数 map
将 summarise
语句应用于每个组.
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)
)
})
输出应该是一个数据帧列表,每个元素对应一个分组变量及其汇总结果。
我有一个带有数字变量(“数字”)和几个因子变量(因子 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
的函数 map
将 summarise
语句应用于每个组.
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)
)
})
输出应该是一个数据帧列表,每个元素对应一个分组变量及其汇总结果。