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

在R软件中构建含均值±SD及显著性水平的双因素ANOVA汇总表

R实现带均值±SD及显著性标记的汇总表

1. 加载所需包

首次运行先安装依赖包,之后直接加载即可:

# 安装依赖包
install.packages(c("dplyr", "emmeans", "multcomp", "tidyr"))

# 加载包
library(dplyr)
library(emmeans)
library(multcomp)
library(tidyr)

2. 导入/模拟数据集

替换下方模拟代码为你的真实数据读取逻辑(比如read.csv("your_data.csv")):

# 模拟符合你需求的数据集(2处理、19基因型、3重复、10参数)
set.seed(123) # 固定随机种子保证结果可复现
data <- expand.grid(
  treat = c("处理1", "处理2"),
  genotype = paste0("基因型", 1:19),
  rep = 1:3
) %>%
  mutate(
    参数1 = rnorm(nrow(.), mean = 50, sd = 5),
    参数2 = rnorm(nrow(.), mean = 20, sd = 3),
    参数3 = rnorm(nrow(.), mean = 80, sd = 7),
    参数4 = rnorm(nrow(.), mean = 15, sd = 2),
    参数5 = rnorm(nrow(.), mean = 35, sd = 4),
    参数6 = rnorm(nrow(.), mean = 60, sd = 6),
    参数7 = rnorm(nrow(.), mean = 25, sd = 3),
    参数8 = rnorm(nrow(.), mean = 70, sd = 5),
    参数9 = rnorm(nrow(.), mean = 10, sd = 1),
    参数10 = rnorm(nrow(.), mean = 45, sd = 5)
  )

3. 批量处理参数生成汇总表

定义函数批量完成均值±SD计算、方差分析与显著性字母标记:

# 单个参数处理函数
process_single_param <- function(data, param_col) {
  # 计算均值±SD
  stat_summary <- data %>%
    group_by(treat, genotype) %>%
    summarise(
      mean_val = mean(.data[[param_col]]),
      sd_val = sd(.data[[param_col]]),
      .groups = "drop"
    ) %>%
    mutate(mean_sd = sprintf("%.2f ± %.2f", mean_val, sd_val)) %>%
    select(treat, genotype, mean_sd)
  
  # 方差分析(处理×基因型交互模型)
  anova_model <- aov(.data[[param_col]] ~ treat * genotype, data = data)
  
  # 多重比较生成显著性字母(Tukey法)
  emm_result <- emmeans(anova_model, ~ treat * genotype)
  signif_letters <- cld(emm_result, adjust = "tukey", Letters = letters, sort = FALSE)
  
  # 合并结果
  stat_summary %>%
    left_join(signif_letters %>% select(treat, genotype, .group), by = c("treat", "genotype")) %>%
    rename(signif_mark = .group) %>%
    mutate(param = param_col)
}

# 批量处理10个参数
param_names <- paste0("参数", 1:10)
all_results <- lapply(param_names, function(x) process_single_param(data, x)) %>%
  bind_rows()

# 转换为宽格式(匹配常规汇总表结构)
final_table <- all_results %>%
  pivot_wider(
    id_cols = c(treat, genotype),
    names_from = param,
    values_from = c(mean_sd, signif_mark)
  )

4. 查看或导出结果

# 查看前5行结果
head(final_table, 5)

# 导出为CSV文件(可直接用于Excel/WPS编辑)
write.csv(final_table, "带显著性标记的汇总表.csv", row.names = FALSE)

关键说明

  • 多重比较默认用Tukey法,可修改adjust参数切换为bonferroni等其他校正方法
  • 显著性字母默认小写,需大写可改Letters = LETTERS
  • 若处理与基因型交互不显著,可将方差模型改为~ treat + genotype

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:50:00