【发布时间】: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 %>% group_by(myids) %>% summarise(mydates=format(max(mydates), '%m/%d/%y'))或者如果你有很多列mydf %>% group_by(myids) %>% slice(which.max(mydates)) -
或
aggregate(mydates~., mydf, max) -
这不是重复的。 OP 没有专门要求
dplyr解决方案,还有许多其他(IMO 更好)方法可以做到这一点。