最近手头下了一批数据,想要删除个中的反复值,好比:> data.set Ensembl.Gene.ID Gene.Biotype Chromosome.Name Gene.Start..bp. Gene.End..bp.1 ENSG00000236666 antisense 22 16274560 162786022 ENSG00000236666 antisense 22 16274560 162786023 ENSG00000234381 pseudogene 22 16333633 163427834 ENSG00000234381 pseudogene 22 16333633 163427835 ENSG00000234381 pseudogene 22 16333633 163427836 ENSG00000234381 pseudogene 22 16333633 163427837 ENSG00000234381 pseudogene 22 16333633 163427838 ENSG00000234381 pseudogene 22 16333633 163427839 ENSG00000234381 pseudogene 22 16333633 1634278310 ENSG00000224435 pseudogene 22 16345912 16355362
在这个数据中,Ensembl.Gene.ID中只有三个值,其余都是反复值,此刻想要按照Ensembl.Gene.ID列从头生成数据,如:> data.set2 Ensembl.Gene.ID Gene.Biotype Chromosome.Name Gene.Start..bp. Gene.End..bp.1 ENSG00000236666 antisense 22 16274560 162786023 ENSG00000234381 pseudogene 22 16333633 1634278310 ENSG00000224435 pseudogene 22 16345912 16355362
那么,在举办这个数据处理惩罚的时候也想过用Excel来办理,可是excel究竟有他的范围性,不能处理惩罚大批量的数据,所以照旧想可以或许用R语言来处理惩罚这批数据。在网上以及几本主要的R语言书籍中都找了下,没有发明有效的处理惩罚步伐。如:http://cos.name/cn/topic/7621 可是获取了一个较量好的办理思路:用duplicated函数。duplicated函数是一个可以用来办理向量可能数据框反复值的函数,它会返回一个TRUE和FALSE的向量,以标注该索引所对应的值是否是前面数据所反复的值。
那么我们照旧以文中开头提到的数据data.set为例来说明办理步伐:1、成立是否反复索引;> index<-duplicated(data.set$Ensembl.Gene.ID)> index [1] FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
2、生成新数据那么到了这一步,应该是许多R语言喜好者都可以或许处理惩罚的问题了,可是我们会发明,我们要的那一行的值是FALSE,所以在后头我们用!来取反:> data.set2<-data.set[!index,]> data.set2 Ensembl.Gene.ID Gene.Biotype Chromosome.Name Gene.Start..bp. Gene.End..bp.1 ENSG00000236666 antisense 22 16274560 162786023 ENSG00000234381 pseudogene