美文网首页
根据列中重复值删除行

根据列中重复值删除行

作者: 芋圆学徒 | 来源:发表于2022-03-08 09:51 被阅读0次

根据某一列中的重复值,删除相应行,最常出现在多组学数据的处理当中。在处理转录组数据时,通常多个芯片对应一个基因,那么注释之后就会遇到一个棘手的问题:

gene name中有重复,无法将gene name转变为行名

这里总结了常见的处理方式,供大家选择:

1 直接去重复
2 取最大值后去重
3 取平均值后去重

library(dplyr)
df<- data.frame(id = c(1, 2, 2, 3, 3,3,4, 5, 5),
                gender = c(3,4,5,NA,3,2,4,2,3),
                variant = c(1,5,2,6,3,7,2,NA,2))

##方法一
t1 <- df %>% distinct(id, .keep_all = TRUE)

##方法二
t2 <- df %>% group_by(id) %>% summarise_all(max)

##方法三
library(limma)
t3 <- avereps(df,df$id) %>% as.data.frame()

原始队列

方法一 直接去重

可以看到,直接去重使用了dplyr包中的distinct函数,函数保留了重复的首行,后面的重复行直接删除


image.png

方法二 取最大值后去重

这里使用的还是dplyr包中的函数,group_by和summarise_all,取重复行里面的最大值后,去掉后续的重复行。但是,当重复值中有缺失值的时候,保留的时缺失值NA而不是最大值

image.png

方法三 取平均值后去重

这里使用的是limma包里面的avereps函数,这里就不存在缺失值了,但是limma文档里提示,avereps函数只能用log2之后的标准数据

image.png

最后

如何选择,我觉着吧,需要看数据的形式,当然,还有很多其他的方式可以筛选,小伙伴们可以分享自己的处理方式,一起探讨哦

相关文章

网友评论

      本文标题:根据列中重复值删除行

      本文链接:https://www.haomeiwen.com/subject/asxarrtx.html