如何在R语言中将分组汇总统计的for循环改写为自定义函数
R 自定义分组汇总统计函数实现
完整函数代码
# 注意原代码中的`purr`为笔误,正确依赖包名为purrr library(gapminder) library(purrr) # 自定义分组汇总函数 my.function <- function(data, group_vars) { # 按传入的分组字段拆分数据集,对每个子数据集执行summary统计 result <- data %>% split(.[group_vars]) %>% map(summary) return(result) }
调用示例
完全匹配你需要的调用形式:
# 单字段分组统计 res_continent <- my.function(gapminder, c("continent")) # 多字段分组统计 res_multi <- my.function(gapminder, c("country", "continent")) # 查看结果 head(res_multi)
逻辑说明
- 直接利用
split()的多字段分组能力,无需额外for循环,支持传入任意数量的分组字段 - 输出结构和你原有for循环实现的结果完全一致,为嵌套列表格式,每个子元素对应一个分组的统计结果
- 如果需要返回数据框格式的汇总结果,可在
map(summary)后补充bind_rows()逻辑即可快速合并所有分组结果
Base R 版本实现(无需加载第三方包)
my.function_base <- function(data, group_vars) { split_data <- split(data, data[group_vars]) result <- lapply(split_data, summary) return(result) }
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

