【问题标题】:Filter data based on most recent date and ID in R [duplicate]根据 R 中的最新日期和 ID 过滤数据 [重复]
【发布时间】:2018-01-18 18:48:30
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 尝试在重复链接中讨论的top_n 选项:a %&gt;% group_by(ID) %&gt;% top_n(1, Date)

标签: r date dataframe


【解决方案1】:

使用dplyr,您可以:

a %&gt;% group_by(ID) %&gt;% filter(Date == max(Date))

【讨论】:

    【解决方案2】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 2021-02-11
      • 2021-12-09
      相关资源
      最近更新 更多