且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何根据R中的日期范围来过滤?

更新时间:2023-01-27 16:34:46

您可以这样做:

  1. 使用lubridatesymd函数获取日期格式
  2. GROUP BYidarrange
  3. 计算到第一次约会的差额
  4. 添加行号列row
  5. 根据您的情况选择过滤!
library(dplyr)
library(lubridate)
df %>% 
  mutate(date_dd.mm.yyyy = dmy(date_dd.mm.yyyy)) %>% 
  group_by(id) %>% 
  arrange(date_dd.mm.yyyy, .by_group = TRUE) %>% 
  mutate(diff = date_dd.mm.yyyy-first(date_dd.mm.yyyy)) %>% 
  mutate(row = row_number()) %>% 
  filter(row <=4 | diff < 90) %>% 
  select(-diff, -row)
      id date_dd.mm.yyyy
   <int> <date>         
 1     1 2021-01-01     
 2     1 2021-02-01     
 3     1 2021-02-02     
 4     1 2021-02-03     
 5     2 2021-03-03     
 6     2 2021-07-05     
 7     2 2021-07-07     
 8     2 2021-12-04     
 9     8 2021-07-06     
10    12 2021-05-01