首页 > 解决方案 > 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。

标签: r

解决方案


澄清您的说明 - “仅从分析日期开始计算去年的交易?”,假设您希望在示例中限制开始日期(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#######

推荐阅读