2017-09-15 9 views
1

私は、最新の変数、すなわち顧客のトランザクションが最近どのように作成されたかを喜んで覚えています。これはRFM分析に役立ちます。定義は次の通りである。各顧客のトランザクションログを毎週観察し、顧客がトランザクションを行った場合には「トランス」というダミー変数を割り当てる。期限の変数は、その週に取引を行った場合の週の数に等しくなります。そうでない場合は、期限は前の期限の値と等しくなります。それをもっと明確にするために、私はあなたのためにデモdata.tableを作成しました。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で私を助けてくれたら、私は感謝します。前もって感謝します。

答えて

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 

私たちは、各顧客の毎週のトランザクションログを観察し、顧客が取引を行った場合、「トランス」と呼ばれるダミー変数を割り当てます。期限の変数は、その週に取引を行った場合の週の数に等しくなります。そうでない場合は、期限は前の期限の値と等しくなります。

これは、トランザクションが存在しない週を無視して、累積最大週を取ることを意味します。週は正の数なので、取引無しの週はゼロとして扱うことができます。

関連する問題