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

Sco*_*eie 6 r date duplicates dataframe

R 新手,但学习处理 db 数据并碰壁。

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

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

UID    | DateLastChange
1      |  01/01/2016
1      |  01/03/2016
2      |  01/14/2015
3      |  02/15/2014
3      |  03/15/2016
Run Code Online (Sandbox Code Playgroud)

我想结束:

UID    | DateLastChange
1      |  01/03/2016
2      |  01/14/2015
3      |  03/15/2016
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用重复的或独特的,但它们似乎并没有完全接受选择性的能力。我可以设想构建一个具有唯一 UID 的新表的可能性,然后以某种方式离开连接以仅匹配最近的日期。

任何建议将不胜感激。斯科特

akr*_*run 6

我们可以用 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
Run Code Online (Sandbox Code Playgroud)

或使用 duplicated

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


And*_*ers 1

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

require(dplyr)
dat$DateLastChange <- strptime(dat$DateLastChange, "%m/%d%Y")) 
dat %>% group_by(UID) %>% summarize(DateLastChange = max(DateLastChange))
Run Code Online (Sandbox Code Playgroud)