You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将WRS2包中t1waybt的ANOVA结果列表存入R数据框?

解决WRS2包t1waybt结果转数据框的问题

因为broom包没有为WRS2::t1waybt生成的对象提供tidy()方法,所以需要手动提取结果中的关键信息并整合成数据框。以下是具体解决方案:

步骤1:查看t1waybt对象的结构

先运行str(anova_role_stss_Int)查看对象包含的元素,确认需要提取的统计量(比如检验统计量、自由度、p值、中位数、四分位距等)。

步骤2:编写自定义提取函数

根据对象结构,编写函数提取单个分析结果的核心信息:

extract_t1waybt <- function(analysis_obj) {
  # 提取假设检验核心结果
  core_stats <- data.frame(
    statistic = analysis_obj$test,
    df1 = analysis_obj$df1,
    df2 = analysis_obj$df2,
    p_value = analysis_obj$p.value,
    xi_squared = analysis_obj$xi,
    method = analysis_obj$method,
    stringsAsFactors = FALSE
  )
  
  # 提取各组的中位数统计
  group_medians <- as.data.frame(t(analysis_obj$med))
  colnames(group_medians) <- paste0("median_", rownames(analysis_obj$med))
  
  # 提取各组的四分位距统计
  group_iqrs <- as.data.frame(t(analysis_obj$iqr))
  colnames(group_iqrs) <- paste0("iqr_", rownames(analysis_obj$iqr))
  
  # 合并所有统计信息
  cbind(core_stats, group_medians, group_iqrs)
}

步骤3:批量处理所有分析结果

给结果列表命名(方便识别每个分析对应的变量),然后批量应用函数并合并成数据框:

# 给列表中的每个分析命名,对应你的12个结果
anova_role_stss_table <- list(
  Int = anova_role_stss_Int,
  Av = anova_role_stss_Av,
  Ar = anova_role_stss_Ar
  # 补充剩下9个分析结果,格式为 名称 = 分析对象
)

# 批量提取并添加分析名称
anova_tidy_list <- lapply(names(anova_role_stss_table), function(test_name) {
  result <- extract_t1waybt(anova_role_stss_table[[test_name]])
  result$test_name <- test_name  # 添加列标记当前分析对应的变量
  result
})

# 合并为单个数据框
anova_result_df <- do.call(rbind, anova_tidy_list)

# 打印最终数据框
print(anova_result_df)

注意事项

  • 如果你的t1waybt对象结构和示例不同(比如元素名称有差异),请根据str()的输出调整函数中提取的元素名。
  • 可以根据需求增减提取的统计量,比如添加各组的样本量(analysis_obj$n)等。

内容的提问来源于stack exchange,提问作者user26264581

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:22:09