R语言如何通过双条件直接为数据框添加差异基因上下调标注
实现方法
你可以直接用dplyr的case_when()语法实现需求,无需提前过滤,逻辑清晰易维护:
library(dplyr) aaa <- aaa %>% mutate( UP_DOWN = case_when( # 同时满足两个阈值且log2FoldChange为正标UP padj < 0.05 & abs(log2FoldChange) > 1.5 & log2FoldChange > 0 ~ "UP", # 同时满足两个阈值且log2FoldChange为负标DOWN padj < 0.05 & abs(log2FoldChange) > 1.5 & log2FoldChange < 0 ~ "DOWN", # 所有不满足条件的统一标NS TRUE ~ "NS" ) )
如果你更习惯用ifelse(),也可以用嵌套写法实现同样效果:
aaa <- aaa %>% mutate( UP_DOWN = ifelse( padj < 0.05 & abs(log2FoldChange) > 1.5, ifelse(log2FoldChange > 0, "UP", "DOWN"), "NS" ) )
逻辑验证
对应你提供的示例数据:
- 第1行:padj<0.05、log2FoldChange=-3.87,绝对值>1.5,标注为
DOWN - 第5行:padj<0.05、log2FoldChange=2.01,绝对值>1.5,标注为
UP - 其余行不满足双阈值条件,统一标注为
NS,完全符合需求。
内容的提问来源于stack exchange,提问作者PesKchan
相关产品推荐
相关产品推荐

