【问题标题】:Create recency variable using previous observation in data.table使用 data.table 中的先前观察创建新近度变量
【发布时间】:2017-09-15 20:43:36
【问题描述】:

我愿意创建一个名为新近度的新变量——客户的交易有多近——这对于 RFM 分析很有用。定义如下:我们每周观察每个客户的交易日志,如果客户进行了交易,则分配一个名为“trans”的虚拟变量。如果她在该周进行交易,则 Recency 变量将等于该周数,否则 Recency 将等于之前的 Recency 值。为了更清楚,我还为您创建了一个演示 data.table。

demo<-data.table( cust=rep(c(1:3), 3))
demo[,week:=seq(1,3,1),by=cust]
demo[, trans:=c(1,1,1,0,1,0,1,1,0)]
demo[, rec:=c(1,1,1, 1,2,1,3,3,1)]

我需要计算我在演示 data.table 中手动输入的“rec”变量。还请考虑一下,我可以通过循环处理它,这需要很多时间。因此,如果您以 data.table 方式帮助我,我将不胜感激。提前致谢。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    这适用于示例:

    demo[, v := cummax(week*trans), by=cust]
    
       cust week trans rec v
    1:    1    1     1   1 1
    2:    2    1     1   1 1
    3:    3    1     1   1 1
    4:    1    2     0   1 1
    5:    2    2     1   2 2
    6:    3    2     0   1 1
    7:    1    3     1   3 3
    8:    2    3     1   3 3
    9:    3    3     0   1 1
    

    我们每周观察每个客户的交易日志,如果客户进行了交易,我们会分配一个名为“trans”的虚拟变量。如果她在该周进行交易,则 Recency 变量将等于该周数,否则 Recency 将等于之前的 Recency 值。

    这意味着采用累积的最大周数,忽略没有交易的周数。由于周数是正数,我们可以将无交易周视为零。

    【讨论】:

      猜你喜欢
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多