计算动态日期时间范围内每个组的观察值
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
提前致谢!!
使用 dplyr
和 lubridate
。对于每个 Customer_ID
,我们找到 min
imum 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
数据如下:
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
提前致谢!!
使用 dplyr
和 lubridate
。对于每个 Customer_ID
,我们找到 min
imum 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