根据日期删除重复项

时间:2013-11-18 17:55:32

标签: r date duplicates

id=c(2,3, 3, 4, 4, 4, 5, 6, 7, 8, 8)
DateofCall=as.Date(c("2013-03-22", "2013-05-25", "2013-02-17", "2013-02-19", "2013-02-  21", "2013-04-22", "2013-06-22", "2013-03-28", "2013-08-22", "2013-03-18", "2012-12-28" ) )
mydata <- data.frame(id, DateofCall)

我想要一个新的数据框,其中只保留具有最新日期的重复ID的观察结果,如下所示:

id=c(2,3, 4, 5, 6, 7, 8)
DateofCall=as.Date(c("2013-03-22", "2013-05-25", "2013-04-22", "2013-06-22", "2013-03-   28", "2013-08-22", "2013-03-18") )
newdata <- data.frame(id, DateofCall)

我尝试使用此功能,但收到错误消息:test=mydata[!((duplicated(mydata$id) & max(mydata$DateofCall)) ), ]日期变量是否有max()替代?

有什么见解?

1 个答案:

答案 0 :(得分:5)

aggregate(DateofCall ~ id, mydata, max)

会做到这一点。

#   id DateofCall
# 1  2 2013-03-22
# 2  3 2013-05-25
# 3  4 2013-04-22
# 4  5 2013-06-22
# 5  6 2013-03-28
# 6  7 2013-08-22
# 7  8 2013-03-18

更新

此版本保留了任意数量的其他列:

subset(mydata, ave(DateofCall, id, FUN = max) == DateofCall)