如何在R的t检验结果表格中添加x与y的样本量列
解决方案:为t检验结果表格添加样本量列
我来帮你搞定这个需求!其实只需要在处理t检验结果的时候,从原始的t.test对象里提取x和y的样本量,再和tidy()输出的标准化结果合并就行,具体可运行的代码和步骤如下:
1. 加载所需包并生成t检验对象
首先我们先加载依赖包,同时设置随机种子让结果可重复:
library(broom) library(purrr) library(dplyr) set.seed(123) # 固定随机种子,确保结果一致 t1 <- t.test(rnorm(50), rnorm(60)) t2 <- t.test(rnorm(60), rnorm(70, 1)) t3 <- t.test(rnorm(80), rnorm(90, 2))
2. 合并tidy结果与样本量列
我们可以在map_df中自定义处理逻辑,对每个t检验对象,同时提取标准化结果和样本量,再合并成数据框:
final_tab <- map_df(list(t1, t2, t3), ~{ # 提取tidy格式的检验结果 test_tidy <- tidy(.x) # 从原t.test对象中提取x和y的样本量 n_x <- length(.x$x) n_y <- length(.x$y) # 合并结果与样本量列 bind_cols(test_tidy, number_of_x = n_x, number_of_Y = n_y) }) %>% # 筛选你需要的列 select(estimate, estimate1, estimate2, statistic, p.value, number_of_x, number_of_Y)
3. 查看最终结果
运行上述代码后,调用final_tab就能得到你想要的表格:
final_tab
输出结果示例(因为固定了种子,结果会稳定):
# A tibble: 3 × 7 estimate estimate1 estimate2 statistic p.value number_of_x number_of_Y <dbl> <dbl> <dbl> <dbl> <dbl> <int> <int> 1 -0.0542 -0.178 -0.123 -0.260 7.95e-1 50 60 2 -1.24 -0.214 1.03 -6.48 1.88e-9 60 70 3 -2.30 -0.231 2.07 -14.6 2.81e-31 80 90
原理说明
t.test函数返回的对象中,会保留你输入的x和y向量,所以我们可以通过length(.x$x)和length(.x$y)直接获取两组的样本量,再用bind_cols()把样本量列和tidy后的检验结果合并,最后筛选需要的列即可。
内容的提问来源于stack exchange,提问作者TobKel
相关产品推荐
相关产品推荐

