如何使用R按分组执行嵌套方差分析(Nested ANOVA)
R 按plant_type分组批量运行嵌套方差分析的实现方案
你可以通过分组批量运算的逻辑实现需求,不需要手动拆分8个数据子集,以下两种方案均可实现:
方案1:tidyverse 嵌套工作流(适合后续需要统一整理分析结果的场景)
首先加载依赖包:
library(tidyverse) library(broom) # 可选,用于把分析结果转为标准化数据框
批量运行分析的代码:
# 按plant_type分组,生成嵌套数据框 result <- df %>% group_by(plant_type) %>% nest() %>% mutate( # 对每个分组数据运行嵌套方差分析 aov_res = map(data, ~aov(concentration ~ day / factor(replicate), data = .x)), # 生成方差分析摘要 aov_summary = map(aov_res, ~summary(.x)), # 可选:将摘要转为结构化数据框 summary_tbl = map(aov_res, ~tidy(.x)) )
结果提取方法:
- 查看所有分组的分析摘要:
result$aov_summary - 提取结构化的全量分析结果表:
result %>% select(plant_type, summary_tbl) %>% unnest(summary_tbl)
方案2:基础R实现(无需安装额外依赖包)
# 按plant_type拆分数据后批量运行方差分析 aov_result_list <- lapply(split(df, df$plant_type), function(sub_data) { aov(concentration ~ day / factor(replicate), data = sub_data) }) # 查看所有分组的方差分析摘要 lapply(aov_result_list, summary)
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

