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

R语言:导出Wilcoxon检验结果为发表用表格及sjt.frq函数问题咨询

问题解决:多变量Wilcoxon检验结果导出与sjPlot函数问题

一、多变量Wilcoxon秩和检验结果导出为发表用表格

你通过循环得到存储于modellist的Wilcoxon检验结果,但用tab系列函数处理失败。原代码的tab系列写法存在逻辑与拼写错误,以下是高效的解决方案:

步骤1:提取变量名与p值

直接从modellist和原数据中提取核心信息,无需重复循环:

# 获取目标变量名称(对应原数据第6-17列)
var_names <- names(samp)[6:17]
# 提取每个检验的p值,匹配modellist的索引范围
p_values <- sapply(modellist[6:17], function(x) x$p.value)
# 整合成标准数据框
result_table <- data.frame(
  变量名称 = var_names,
  P值 = round(p_values, 3)  # 保留3位小数,符合学术发表规范
)

步骤2:生成发表级表格

在R Markdown中,可通过以下工具生成美观表格:

轻量方案:knitr::kable()

knitr::kable(result_table, caption = "多变量Wilcoxon秩和检验结果", align = "cc")

定制化方案:gt包

library(gt)
result_table %>%
  gt() %>%
  tab_header(title = "多变量Wilcoxon秩和检验结果") %>%
  fmt_number(columns = P值, decimals = 3) %>%
  cols_label(变量名称 = "变量名", P值 = "P值")

原tab系列代码的问题说明

  • 拼写错误:funcation应为function
  • 逻辑冗余:在tab_stat_fun_df内重复循环完全没必要,且引用了未定义的sam(应为samp)、model等对象
  • 工具适配:tab系列函数更适合整体描述统计,批量检验结果直接提取整理效率更高

二、sjPlot包sjt.frq函数无法使用的问题

sjt.frq已被移除,原因是sjPlot在版本更新中重构了函数体系,将频率统计功能整合到新函数中。

替代方案:tab_frq()

这是sjPlot官方推荐的替代函数,完美支持Likert量表数据:

library(sjPlot)
# 单个Likert变量的频率统计
tab_frq(samp$att1_goodofall, 
        variable.labels = "为所有人谋福祉的态度",
        value.labels = c("1=非常不同意", "2=不同意", "3=中立", "4=同意", "5=非常同意"))

# 批量处理多个Likert变量
tab_frq(samp[,6:17], 
        variable.labels = c(
          "att1_goodofall" = "为所有人谋福祉",
          "att2_pvtdisease" = "个人疾病顾虑",
          "att12_highmedicalcost" = "医疗成本过高顾虑"
          # 其余变量标签可依次补充
        ),
        value.labels = c("1=非常不同意", "2=不同意", "3=中立", "4=同意", "5=非常同意"))

补充:更详细的频率统计

若需要包含百分比、累积百分比的详细结果,可使用sjmisc::frq()函数,同样支持标签设置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:15:37