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

如何制作适配Word的带显著性星号的发表级相关矩阵

生成带显著性星号和变量名的发表级相关矩阵(适用于Word)

方案一:基于psych + flextable优化实现

针对现有代码的不足,补充变量名列、添加显著性星号的完整代码如下:

library(flextable)
library(psych)
library(dplyr)

# 创建数据框
var1 <- c(2,3,1,5,4,5)
var2 <- c(23,25,21,31,67,43)
var3 <- c(2,5,98,4,3,54)
df <- data.frame(var1,var2,var3)

# 计算相关系数与对应p值
df.corr <- psych::corr.test(df, adjust = "none")
corr_r <- as.data.frame(df.corr$r)
corr_p <- as.data.frame(df.corr$p)

# 定义显著性星号规则:*p<0.05, **p<0.01, ***p<0.001
add_stars <- function(p_val) {
  case_when(
    p_val < 0.001 ~ "***",
    p_val < 0.01 ~ "**",
    p_val < 0.05 ~ "*",
    TRUE ~ ""
  )
}

# 为每个p值生成星号,并与相关系数合并
corr_with_stars <- mapply(
  function(r, star) paste0(round(r, 2), star),
  corr_r,
  apply(corr_p, c(1,2), add_stars)
) %>% as.data.frame()

# 添加变量名列(将原行名转为第一列)
corr_with_stars$变量名 <- rownames(corr_with_stars)
corr_with_stars <- corr_with_stars[, c(ncol(corr_with_stars), 1:(ncol(corr_with_stars)-1))]

# 生成可导出Word的表格
ft_final <- flextable(corr_with_stars) %>%
  set_header_labels(变量名 = "") %>% # 隐藏第一列标题
  align(align = "center", part = "all") %>%
  autofit()

# 导出到Word文档
save_as_docx(ft_final, path = "带星号相关矩阵.docx")

方案二:基于gtsummary快速实现

gtsummary的tbl_cor()函数可一键生成符合发表规范的相关矩阵,自动处理变量名、显著性星号,操作更简洁:

library(gtsummary)
library(flextable)

# 创建数据框
var1 <- c(2,3,1,5,4,5)
var2 <- c(23,25,21,31,67,43)
var3 <- c(2,5,98,4,3,54)
df <- data.frame(var1,var2,var3)

# 生成带星号的相关矩阵
corr_table <- df %>%
  tbl_cor(
    method = "pearson", # 可选spearman等其他相关方法
    stars = TRUE, # 启用显著性星号
    show_p = FALSE # 若不需要显示p值,设为FALSE即可
  ) %>%
  modify_header(label = "") %>% # 隐藏第一列标题
  as_flex_table() # 转换为flextable格式,支持导出Word

# 导出到Word
save_as_docx(corr_table, path = "相关矩阵_gtsummary版.docx")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:12:50