我正在做一些数据转换,需要按组筛选前3条记录(从最大日期算起的最近3个月的记录)。以下是概念。
我想按ID筛选出最近3个月的记录,最终目的是根据ID的最新3个月记录进行一些汇总。
注意:突出显示的橙色表示没有任何值(因此,在这种情况下,最近3次观察所选择的结果可能不起作用)
# Sample dateset
df <- data.frame(id=c('A06','A06','A06','A06','A06','A08','A08','A08','A168','A168'),
date=c("31/10/2018","31/12/2018","28/2/2018","30/4/2018","31/5/2018","31/7/2017","31/8/2017","30/9/2017","31/10/2016","31/12/2016"),
value=c(20,8,2,3,7,15,4,1,1,5))
我确实尝试使用下面的代码选择最后N行,但由于我在过去3个月的记录之间可能存在空值(例如:上图中突出显示的橙色),因此无法解决我的问题。 因此,我认为过滤器应基于日期
df %>%
group_by(id) %>%
filter(row_number() >= (n() - 2))
预期结果
任何想法我该如何过滤?喜欢dplyr
,lubridate
包