【问题标题】:Add column to state whether two purchases were made by same customer within 30 days添加栏以说明同一客户是否在 30 天内进行了两次购买
【发布时间】:2022-08-10 00:37:43
【问题描述】:

我有一个数据集,可以减少到两列 - CustomerID 和 SaleDate。我已经确保这个数据集只包括至少有两次销售的客户。我想添加第三列,说明第二次销售(或第三次销售与第二次等相比)是否在前一次销售的 30 天内。

CustomerID SaleDate
1 14/09/2021
1 30/09/2021
1 03/10/2021
2 23/07/2021
2 24/07/2021

在标题为“SaleDate”的新列中,如果转售在上一次销售的 30 天内添加一个“1”,如果不是,则添加一个“0”(例如,它是第一次销售或不在 30 天内)以前的销售)。因此,在这种情况下,最终结果将是:

CustomerID SaleDate ResaleWithin30
1 14/09/2021 0
1 30/09/2021 1
1 03/10/2021 1
2 23/07/2021 0
2 24/07/2021 1

对此的任何建议将不胜感激。谢谢你。

    标签: r


    【解决方案1】:

    您可以使用lag 来检查下一条记录是否在当前记录的30 天内。

    library(dplyr)
    
    df %>% 
      group_by(CustomerID) %>% 
      mutate(SaleDate = as.Date(SaleDate, tryFormats = "%d/%m/%Y"),
             ResaleWithin30 = as.integer(SaleDate - lag(SaleDate) <= 30),
             ResaleWithin30 = replace_na(ResaleWithin30, 0))
    
    # A tibble: 5 × 3
    # Groups:   CustomerID [2]
      CustomerID SaleDate   ResaleWithin30
           <int> <date>              <int>
    1          1 2021-09-14              0
    2          1 2021-09-30              1
    3          1 2021-10-03              1
    4          2 2021-07-23              0
    5          2 2021-07-24              1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-16
      • 1970-01-01
      • 2016-09-19
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      相关资源
      最近更新 更多