R语言基于唯一ENSG ID去除基因列表重复条目问题咨询
解决方案
通用ENSG_ID去重方法
直接将duplicated()函数作用于ENSG_ID列即可实现按唯一ENSG ID去重,默认会保留每个ENSG ID第一次出现的条目:
# 保留每个ENSG_ID第一次出现的非重复条目 annotation1 <- annotation1[!duplicated(annotation1$ENSG_ID), ]
如果使用tidyverse生态的dplyr包,也可以用更简洁的写法:
library(dplyr) annotation1 <- annotation1 %>% distinct(ENSG_ID, .keep_all = TRUE)
优先保留指定ENSG对应条目的定制化去重
如果你需要明确保留ENSG00000187134对应的AKRC1条目,可先对数据集做优先级排序,让目标条目排在对应ENSG ID的第一位,去重时就会自动保留目标条目:
library(dplyr) annotation1 <- annotation1 %>% # 构造优先级字段:目标条目优先级设为1,其余为2 mutate(priority = ifelse(ENSG_ID == "ENSG00000187134" & GeneSymbol == "AKRC1", 1, 2)) %>% # 按优先级升序排列,目标条目会排在最前 arrange(priority) %>% # 按ENSG_ID去重,保留第一个出现的条目 distinct(ENSG_ID, .keep_all = TRUE) %>% # 移除辅助的优先级字段 select(-priority)
注意事项
- 去重前建议先统计重复的ENSG ID数量,确认是否符合预期:
sum(duplicated(annotation1$ENSG_ID)) - 如果存在ENSG_ID为空的条目,建议先过滤空值再执行去重,避免误删
内容的提问来源于stack exchange,提问作者Jessica GARCIA
相关产品推荐
相关产品推荐

