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
相关产品推荐
相关产品推荐

