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
我想结束:
UID | DateLastChange
1 | 01/03/2016
2 | 01/14/2015
3 | 03/15/2016
我曾尝试使用重复的或独特的,但它们似乎并没有完全接受选择性的能力。我可以设想构建一个具有唯一 UID 的新表的可能性,然后以某种方式离开连接以仅匹配最近的日期。
任何建议将不胜感激。
斯科特
最佳答案
我们可以使用 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)]
关于根据日期字段和另一个字段删除 R 数据框中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41455746/