根据R中最近的日期和ID过滤数据

时间:2018-01-18 18:48:30

标签: r date dataframe

我的数据结构类似于以下内容:

Performance

我想删除所有重复a<-data.frame(ID=c(1,2,2,2,3,3),Date=as.Date(c("2017-01-01","2017-01-02","2017-01-03","2017-01-04","2017-01-05","2017-01-06"))) print(a) ID Date 1 2017-01-01 2 2017-01-02 2 2017-01-03 2 2017-01-04 3 2017-01-05 3 2017-01-06 ,并根据ID保留最新的重复Date以获取以下内容:

b<-data.frame(ID=c(1,2,3),Date=as.Date(c("2017-01-01","2017-01-04","2017-01-06")))
print(b)
ID       Date
1   2017-01-01
2   2017-01-04
3   2017-01-06

谢谢!

2 个答案:

答案 0 :(得分:1)

使用dplyr即可:

a %>% group_by(ID) %>% filter(Date == max(Date))

答案 1 :(得分:0)

使用data.table

  library(data.table)
  setDT(a)
  a[, max_date := max(Date), by = ID]
  a <- a[max_date == Date, ]
  a[, max_date := NULL]

你会得到:

    ID       Date
1:  1 2017-01-01
2:  2 2017-01-04
3:  3 2017-01-06