如何用tidyverse包创建简洁的配对t检验结果表格?
使用tidyverse批量生成配对t检验结果表格
需求说明
需要生成包含变量名、两组均值、p值的t检验结果表格,现有手动逐个变量处理的方式扩展性极差,希望通过单条tidyverse管道实现,且支持传入变量名向量批量处理。
解决方案
利用tidyr::pivot_longer将数据转为长格式,结合dplyr::group_by+summarise批量计算均值与t检验p值,全程通过单管道完成,支持任意数量的分析变量:
library(dplyr) library(infer) library(tidyr) # 构造示例数据 df <- mtcars %>% mutate(engine = if_else(vs == 0, "V-shaped", "straight")) # 定义要分析的变量向量(可按需扩展) vars_to_test <- c("mpg", "disp") # 单管道生成结果表格 result_table <- df %>% select(all_of(vars_to_test), engine) %>% pivot_longer(cols = -engine, names_to = "name", values_to = "value") %>% group_by(name) %>% summarise( V_shaped = mean(value[engine == "V-shaped"], na.rm = TRUE), straight = mean(value[engine == "straight"], na.rm = TRUE), p_value = t_test(value ~ engine, alternative = "two-sided")$p_value, .groups = "drop" ) result_table #> # A tibble: 2 × 4 #> name V_shaped straight p_value #> <chr> <dbl> <dbl> <dbl> #> 1 disp 307. 132. 0.00000248 #> 2 mpg 16.6 24.6 0.000110
方法优势
- 扩展性强:只需修改
vars_to_test向量即可添加/移除分析变量,无需重复编写代码 - 简洁高效:单条管道完成所有操作,避免手动拆分多步流程
- 鲁棒性高:加入
na.rm = TRUE处理缺失值,适配更多实际场景
内容的提问来源于stack exchange,提问作者nicholas
相关产品推荐
相关产品推荐

