R语言 删除重复值
用R语言怎么删除数据中的重复值,最近手头下了一批数据,想要删除其中的重复值,比如:
> data.set
Ensembl.Gene.ID Gene.Biotype Chromosome.Name Gene.Start..bp. Gene.End..bp.
1 ENSG00000236666 antisense 22 16274560 16278602
2 ENSG00000236666 antisense 22 16274560 16278602
3 ENSG00000234381 pseudogene 22 16333633 16342783
4 ENSG00000234381 pseudogene 22 16333633 16342783
5 ENSG00000234381 pseudogene 22 16333633 16342783
6 ENSG00000234381 pseudogene 22 16333633 16342783
7 ENSG00000234381 pseudogene 22 16333633 16342783
8 ENSG00000234381 pseudogene 22 16333633 16342783
9 ENSG00000234381 pseudogene 22 16333633 16342783
10 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 16278602
3 ENSG00000234381 pseudogene 22 16333633 16342783
10 ENSG00000224435 pseudogene 22 16345912 16355362
那么,在进行这个数据处理的时候也想过用excel来解决,但是excel毕竟有他的局限性,不能处理大批量的数据,所以还是想能够用R语言来处理这批数据。
在网上以及几本主要的R语言书籍中都找了下,没有发现有效的处理办法。
但是获取了一个比较好的解决思路:用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 16278602
3 ENSG00000234381 pseudogene 22 16333633 16342783
10 ENSG00000224435 pseudogene 22 16345912 16355362