我有一个问题,已经简化为以下任务。对于一个包含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))
。请注意保持翻译后的内容与原文意思相符,且不添加解释性文字或其他任何额外内容。 - akrunaggregate(mydates~., mydf, max)
- Pierre Ldplyr
解决方案,而且还有很多其他(我认为更好的)方法可以解决这个问题。 - jlhoward