如何在R数据框中按多条件筛选多组比较中均差异表达的基因
筛选多组比较中均满足条件的差异基因
我们有整合了4个比较组差异分析结果的数据框dex_df,需要筛选出**在所有组中均满足logFC > 2且FDR < 0.05**的基因——只要某基因在任意一组不满足条件,就将其排除。
解决方案
方法1:使用tidyverse(dplyr)
先加载dplyr包,通过分组统计筛选符合要求的基因:
library(dplyr) # 筛选所有组都满足条件的基因 qualified_genes <- dex_df %>% # 过滤单组内符合条件的记录 filter(logFC > 2 & FDR < 0.05) %>% # 按基因分组,统计该基因符合条件的组数量 group_by(gene) %>% summarise(qualified_group_count = n()) %>% # 仅保留在全部4个组都符合条件的基因 filter(qualified_group_count == 4) %>% # 提取基因向量 pull(gene)
方法2:基础R实现
无需额外包,直接验证每个基因的所有组数据:
# 获取所有唯一基因,逐个验证是否全组满足条件 qualified_genes <- unique(dex_df$gene)[ sapply(unique(dex_df$gene), function(gene_id) { # 提取当前基因的所有组数据 gene_data <- dex_df[dex_df$gene == gene_id, ] # 检查所有组的logFC和FDR是否都符合要求 all(gene_data$logFC > 2) & all(gene_data$FDR < 0.05) }) ]
两种方法最终都会输出符合要求的基因向量,可根据自身环境选择合适的方式。
内容的提问来源于stack exchange,提问作者Sebastian Hesse
相关产品推荐
相关产品推荐

