r - R - 仅计算去年的交易数量
问题描述
使用 RFM R 包,有没有办法可以限制 transaction_count 从分析日期开始计算去年的交易?
https://github.com/rsquaredacademy/rfm/blob/master/R/rfm-table-transaction.R https://github.com/rsquaredacademy/rfm
result <-
data %>%
dplyr::select(!! cust_id, !! odate, !! revenues) %>%
dplyr::group_by(!! cust_id) %>%
dplyr::summarise(
date_most_recent = max(!! odate), amount = sum(!! revenues),
transaction_count = dplyr::n()
) %>%
dplyr::mutate(
recency_days = (analysis_date - date_most_recent) / lubridate::ddays()
) %>%
dplyr::select(
!! cust_id, date_most_recent, recency_days, transaction_count,
amount
) %>%
magrittr::set_names(c("customer_id", "date_most_recent", "recency_days", "transaction_count", "amount"))
我的数据集如下所示:
customer_id date amount
111 21/03/2019 10.50
111 10/11/2018 9.50
111 05/06/2017 50.70
我想确保 transaction_count 仅从分析日期开始回溯一年。例如,如果分析日期为 22/03/2019,则事务计数为 2。
解决方案
澄清您的说明 - “仅从分析日期开始计算去年的交易?”,假设您希望在示例中限制开始日期(21/03/2018)和分析日期(22/03/2019)之间的交易计数,如果您有不同的要求,请在评论中添加注释。我建议您限制输入数据本身的记录,而不是考虑在您提出的问题中的RFM 包代码中修改它,下面给出了一个 R 脚本示例供您参考。
#Define analysis window, ******before passing data to RFM package****
#Referring 365 days to catch up last one year period
analysis_period_days <- 365
#assign static value for analysis_date
#Or you can go with analysis_date <- Sys.Date()
#Or you also can give as a parameter if you have requirement to use past date as analysis date.
analysis_start_date <- analysis_date - analysis_period_days
analysis_end_date <- analysis_date
#Use analysis_start_date and analysis_end_date for filtering the records while fetching from DB,
#Or directly apply in your DataFrame before calling RFM method
####RFM pcakge call here#######