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

如何批量计算每个Accession在多条件组合下的p值?

批量计算不同条件组合的t检验p值

针对你提供的两种数据框结构,分别给出批量计算每个Accession的三组两两t检验p值的方法:

第一种数据框(宽格式,每行对应一个Accession,各条件重复为独立列)

直接按行提取各条件的重复值,用rowwise()逐行计算:

library(dplyr)

# 加载数据
df1 <- structure(list(Accession = c("AAAAA", "MYDDD", "STDTTT"), First_Rep1 = c(24.8432602, 
33.36984063, 30.93297676), First_Rep2 = c(25.16806123, 33.59779257, 
31.71292828), Condition1_Rep1 = c(28.74214021, 36.89735285, 35.67871257
), Condition1_Rep2 = c(28.68311263, 37.12617154, 35.89283737), 
    Condition2_Rep1 = c(28.60045356, 36.85154916, 35.3600596), 
    Condition2_Rep2 = c(27.5609252, 36.25666317, 34.87004551)), row.names = c(NA, 
-3L), class = c("tbl_df", "tbl", "data.frame"))

# 批量计算p值
result1 <- df1 %>%
  rowwise() %>%
  mutate(
    First_Condition1_pvalue = t.test(c(First_Rep1, First_Rep2), c(Condition1_Rep1, Condition1_Rep2))$p.value,
    First_Condition2_pvalue = t.test(c(First_Rep1, First_Rep2), c(Condition2_Rep1, Condition2_Rep2))$p.value,
    Condition1_Condition2_pvalue = t.test(c(Condition1_Rep1, Condition1_Rep2), c(Condition2_Rep1, Condition2_Rep2))$p.value
  ) %>%
  ungroup() %>%
  select(Accession, First_Condition1_pvalue, First_Condition2_pvalue, Condition1_Condition2_pvalue)

print(result1)

第二种数据框(每个Accession对应两行重复,各条件为独立列)

先将数据转成长格式,再按Accession分组计算:

library(dplyr)
library(tidyr)

# 加载数据
df2 <- structure(list(Accession = c("AAAAA", "AAAAA", "MYDDD", "MYDDD", 
"STDTTT", "STDTTT"), grp = c("Rep1", "Rep2", "Rep1", "Rep2", 
"Rep1", "Rep2"), First = c(24.8432602, 25.16806123, 33.36984063, 
33.59779257, 30.93297676, 31.71292828), Condition1 = c(28.74214021, 
28.68311263, 36.89735285, 37.12617154, 35.67871257, 35.89283737
), Condition2 = c(28.60045356, 27.5609252, 36.85154916, 36.25666317, 
35.3600596, 34.87004551)), class = "data.frame", row.names = c(NA, 
-6L))

# 转换为长格式
df2_long <- df2 %>%
  pivot_longer(cols = c(First, Condition1, Condition2), names_to = "Condition", values_to = "Value")

# 分组计算p值
result2 <- df2_long %>%
  group_by(Accession) %>%
  summarise(
    First_Condition1_pvalue = t.test(Value[Condition == "First"], Value[Condition == "Condition1"])$p.value,
    First_Condition2_pvalue = t.test(Value[Condition == "First"], Value[Condition == "Condition2"])$p.value,
    Condition1_Condition2_pvalue = t.test(Value[Condition == "Condition1"], Value[Condition == "Condition2"])$p.value
  ) %>%
  ungroup()

print(result2)

补充说明

  • 若需要调整t检验参数(如假设方差齐性),可在t.test()中添加var.equal = TRUE参数;
  • 两种方法输出结果均符合你要求的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:35:02