如何用dplyr或lapply按sp分组执行A、B组间t.test检验
针对分组的t检验实现方案
这里提供两种简洁的实现方式,无需手动拆分数据集:
Base R 原生方法
利用by()函数直接按sp分组,对每个分组内的ID组做t检验:
# 执行分组t检验 ttest_results <- by(DF, DF$sp, function(sub_df) { t.test(y ~ ID, data = sub_df) }) # 查看每个sp对应的检验结果 ttest_results
by()会自动按sp拆分数据集,对每个子集执行t.test(y ~ ID),返回的结果是一个列表,每个元素对应一个sp的检验详情。
Tidyverse 整洁输出方法
如果需要结构化的表格结果,可以结合dplyr和broom包,把检验结果转换成数据框:
library(dplyr) library(broom) # 生成整洁的检验结果表格 tidy_ttest <- DF %>% group_by(sp) %>% group_modify(~ broom::tidy(t.test(y ~ ID, data = .x))) %>% ungroup() # 查看结构化结果 tidy_ttest
这种方式会输出包含统计量、p值、置信区间等信息的规整数据框,方便后续分析和可视化。
内容的提问来源于stack exchange,提问作者roday
相关产品推荐
相关产品推荐

