如何合并多列P值做校正?求R语言FDR方法实现代码
合并多列P值并执行FDR校正
实现步骤
- 提取
p-value1和p-value2两列的所有P值,合并为单个向量,NA值不参与校正计算 - 使用R内置的
p.adjust()函数,指定method = "fdr"完成错误发现率校正 - 将校正结果对应匹配回原数据的新列
Adjustment_Pvalues中
完整代码实现
假设你的数据框名为df,运行以下代码:
# 合并两列P值为向量 all_p <- c(df$`p-value1`, df$`p-value2`) # 执行FDR校正,保留原向量长度(NA位置返回NA) adjusted_p <- p.adjust(all_p, method = "fdr", na.rm = TRUE) # 将校正结果按行拆分,存入新列(用字符串格式展示每行的两个校正值) df$Adjustment_Pvalues <- mapply(function(x, y) paste(round(x, 4), round(y, 4), sep = ", "), adjusted_p[1:nrow(df)], adjusted_p[(nrow(df)+1):length(adjusted_p)])
示例结果
针对你提供的测试数据,执行后输出如下:
Trait p-value1 p-value2 Adjustment_Pvalues
1 0.5 0.01 0.5000, 0.0300
2 NA NA NA, NA
3 0.2 0.45 0.4000, 0.5000
4 0.2 0.02 0.4000, 0.0300
校正计算逻辑:合并后的有效P值共6个——0.5, 0.2, 0.2, 0.01, 0.45, 0.02,经FDR校正后得到0.5, 0.4, 0.4, 0.03, 0.5, 0.03,对应放回原列位置即可。
内容的提问来源于stack exchange,提问作者ElR
相关产品推荐
相关产品推荐

