根据日期字段和另一个字段删除R数据框中的重复行

时间:2017-01-04 03:25:17

标签: r date dataframe duplicates

R的新手,但学会处理数据库数据并碰壁。

我想根据两个条件从表中删除重复的行/观察:用户ID字段和指示用户上次更改的日期字段,因此是最近的日期行。

我的截断数据集如下所示:

ngOnInit():void{
 this.heroes=this.heroService.getHeroes(); //better
}


constructor(private heroService:HeroService){

  this.heroes=this.heroService.getHeroes(); //this is bad
}

我想最终:

UID    | DateLastChange
1      |  01/01/2016
1      |  01/03/2016
2      |  01/14/2015
3      |  02/15/2014
3      |  03/15/2016

我试图使用重复或唯一,但他们似乎并不完全接受选择性的能力。我可以设想使用唯一的UID构建一个新表的可能性,然后以某种方式保持连接只与最近的日期匹配。

非常感谢任何建议。 斯科特

2 个答案:

答案 0 :(得分:2)

我们可以使用data.table

library(data.table)
setDT(df1)[order(UID, -as.IDate(DateLastChange, "%m/%d/%Y")), head(.SD, 1), by = UID]
#     UID DateLastChange
#1:   1     01/03/2016
#2:   2     01/14/2015
#3:   3     03/15/2016

或使用duplicated

setDT(df1)[order(UID, -as.IDate(DateLastChange, "%m/%d/%Y"))][!duplicated(UID)]

答案 1 :(得分:0)

使用dplyr - 数据可以按任何顺序

require(dplyr)
dat$DateLastChange <- strptime(dat$DateLastChange, "%m/%d%Y")) 
dat %>% group_by(UID) %>% summarize(DateLastChange = max(DateLastChange))
相关问题