楼主: lanhong1993
2751 5

[问答] 求助!如何去除重复行才更快?求交流 [推广有奖]

  • 1关注
  • 1粉丝

已卖:286份资源

博士生

54%

还不是VIP/贵宾

-

威望
0
论坛币
2701 个
通用积分
3.4261
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
12167 点
帖子
214
精华
0
在线时间
141 小时
注册时间
2016-11-1
最后登录
2024-3-26

楼主
lanhong1993 发表于 2017-4-8 23:44:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
微信图片_20170408233611.png
如图,比如我有如上数据,我想根据相同的ID1和ID2,保留时间最早的那一行。我的操作是这样的:
library(dplyr)
data<-arrange(data,data$ID1,data$ID2,data$time)
data<-data[!duplicated(data$ID1,data$ID2),]
首先根据ID1,ID2,time排序,然后用!duplicated()删去ID1和ID2重复的行,保留的即是时间最早的那一行。但是由于数据量庞大,每次运算都要花费好几个小时。所以在此请教各位老师,有没有更快的运算方法,占用内存或时间少一点的。(duplicated的缺点就是运算慢)
二维码

扫码加我 拉你入群

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

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

关键词:Library BRARY dplyr Data rar

沙发
飞天玄舞6 在职认证  发表于 2017-4-9 08:42:35
首先按照ID1,ID2分组(group_by),然后再按照time升序排序(arange),最后取各组的第一个。

藤椅
飞天玄舞6 在职认证  发表于 2017-4-9 08:43:09
其实用data.table更快

板凳
lanhong1993 发表于 2017-4-9 09:08:28 来自手机
飞天玄舞6 发表于 2017-4-9 08:42
首先按照ID1,ID2分组(group_by),然后再按照time升序排序(arange),最后取各组的第一个。
data<-group_by(data,ID1,ID2,)%>% arrange(time)%>%filter(row_number==1)
这样么?这样的运算速度依然不快!

报纸
colinwang 企业认证  发表于 2017-4-9 09:42:57
!duplicate()去重保留第一个

地板
飞天玄舞6 在职认证  发表于 2017-4-9 21:21:25
先用data.table的fsort对time升序排序,再用duplicated按ID1,ID2去重,,然后在选择。。data.table可是很快的

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 06:59