【问题标题】:Select most recent date, by row in R [duplicate]在R中按行选择最近的日期[重复]
【发布时间】:2015-12-05 15:35:07
【问题描述】:

我有一个问题,我已简化为以下任务。对于带有 ID 和日期的数据框;

set.seed(123)
myids <- sample(c('a001', 'a002', 'a003'), 12, replace = TRUE)
mydates <- as.Date(sample(c("2007-06-22", "2004-02-13", "2007-05-22", "2001-10-10", "2008-05-05", "2004-02-15"), 12, replace = TRUE))
mydf <- data.frame(myids, mydates)

我只需要为每个主题选择日期最近的行。结果应该是:

a001    5/5/08
a002    5/5/08
a003    2/15/04

有人知道怎么做吗?

【问题讨论】:

  • 试试library(dplyr); mydf %&gt;% group_by(myids) %&gt;% summarise(mydates=format(max(mydates), '%m/%d/%y'))或者如果你有很多列mydf %&gt;% group_by(myids) %&gt;% slice(which.max(mydates))
  • 或aggregate(mydates~., mydf, max)
  • 这不是重复的。 OP 没有专门要求 dplyr 解决方案,还有许多其他(IMO 更好)方法可以做到这一点。

标签: r subset


【解决方案1】:

这是一个 data.table 解决方案。

library(data.table)
setDT(mydf)[,.SD[which.max(mydates)],keyby=myids]
#    myids    mydates
# 1:  a001 2008-05-05
# 2:  a002 2008-05-05
# 3:  a003 2004-02-15

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多