楼主: CDA网校
824 0

[每天一个数据分析师] R语言 删除重复值 [推广有奖]

管理员

已卖:189份资源

泰斗

4%

还不是VIP/贵宾

-

威望
3
论坛币
123742 个
通用积分
11681.8050
学术水平
278 点
热心指数
286 点
信用等级
253 点
经验
230666 点
帖子
7052
精华
19
在线时间
4401 小时
注册时间
2019-9-13
最后登录
2026-2-6

初级热心勋章

楼主
CDA网校 学生认证  发表于 2022-6-23 15:22:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
用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语言书籍中都找了下,没有发现有效的处理办法。
如: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      16278602
3  ENSG00000234381   pseudogene              22        16333633      16342783
10 ENSG00000224435   pseudogene              22        16345912      16355362

这样我们就大功告成了

      相关帖子DA内容精选
  • 大厂数据分析面试指南!来自亚马逊、谷歌、微软、头条、美团的面试问题!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 重复值 chromosome duplicate pseudo

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-6 09:37