R按组筛选前3条记录(最近3个月的记录)

时间:2019-02-25 09:35:44

标签: r dplyr lubridate

我正在做一些数据转换,需要按组筛选前3条记录(从最大日期算起的最近3个月的记录)。以下是概念。 enter image description here

我想按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)) 

预期结果

enter image description here

任何想法我该如何过滤?喜欢dplyrlubridate

0 个答案:

没有答案