计算动态日期时间范围内每个组的观察值

Count observations for each group within dynamic date-time range

数据如下:

Customer_ID    Trans_ID    Trans_DateTime
  A             1            2014-10-01 10:02:09
  A             2            2014-10-01 16:20:09
  B             3            2014-10-01 12:05:20
  B             4            2014-10-01 17:05:20
  A             5            2014-12-01 10:02:09
  A             6            2014-12-01 10:02:50
  B             7            2014-12-01 12:05:19
  B             8            2014-12-01 12:05:21

我需要计算每个客户在第一笔交易后的两个月内的交易次数。我只能找到所有客户的交易次数接下来的两个月对所有人来说都是共同的。但是,我需要将时间段设置为动态的(即,根据每个客户进行第一笔交易的时间而有所不同。)

根据以上数据,输出应如下所示:

Customer_ID  number_of_transactions
 A           2
 B           3

提前致谢!!

使用 dplyrlubridate。对于每个 Customer_ID,我们找到 minimum Trans_DateTime(第一笔交易)并向其添加 2 个月和 filter 在该 window 中发生的所有交易和count 他们的出现。

library(dplyr)
library(lubridate)

df %>%
   group_by(Customer_ID) %>%
   mutate(Trans_DateTime = ymd_hms(Trans_DateTime)) %>%
   filter(Trans_DateTime < (min(Trans_DateTime) + months(2))) %>%
   count()


#   Customer_ID   n
#    <chr>       <int>
#1     A           2
#2     B           3