如何创建循环显示日期和唯一客户ID的指标?

时间:2019-06-12 18:24:25

标签: spss

数据结构如下:

Cli_ID   M_YR    trans-Date     First_Trans
1004525 Oct 17  30-Oct-17   20-Sep-17
1004570 Oct 17  02-Oct-17   30-Aug-17
1004570 Oct 17  05-Oct-17   30-Aug-17
1004570 Oct 17  10-Oct-17   30-Aug-17
1004570 Oct 17  11-Oct-17   30-Aug-17
1004570 Oct 17  12-Oct-17   30-Aug-17
1004570 Oct 17  13-Oct-17   30-Aug-17
1004570 Oct 17  17-Oct-17   30-Aug-17
1004570 Oct 17  19-Oct-17   30-Aug-17
1004570 Oct 17  23-Oct-17   30-Aug-17
1004570 Oct 17  24-Oct-17   30-Aug-17
1004570 Oct 17  25-Oct-17   30-Aug-17
1143578 Oct 17  13-Oct-17   07-Sep-17
1143578 Oct 17  18-Oct-17   07-Sep-17
1143578 Oct 17  19-Oct-17   07-Sep-17

我需要确定每月至少进行一次交易的所有客户。我想根据他们的首次交易日期计算(Count_month)他们应该进行至少一次交易的多少个月(例如,如果客户的第一次交易是2017年9月,那么从2017年10月到2019年6月,他们至少需要进行一笔交易的月份是21)。 然后创建另一个计数器以循环遍历每个M_YR(月,年),如果唯一客户在给定的月份(Count_client)中有交易,则加1(例如,如果客户至少有一个交易a)从2017年10月到2019年6月,则计数器为21)

如果我比较这两个变量(Count_client和Count_month),如果Count_client

此方法有效吗?有没有更简单的方法可以做到这一点?我觉得这可能不是最简单的解决方案,但我目前还没有主意。

1 个答案:

答案 0 :(得分:0)

要计算第一笔交易到当前日期之间的月数,您可以使用:

compute Months_since_1st = datediff($time, First_Trans, "months"). 

($ Time表达式将在计算中使用当前日期-您可以将其替换为任何其他日期)。

要计算进行任何交易的月数:

dataset name orig.
* identifying every month/year that had transactions - per client.
dataset declare agg1.
aggregate out=agg1 /break=Cli_ID M_YR /n=n.
dataset activate agg1.
* counting them for each client.
dataset declare agg2.
aggregate out=agg2 /break=Cli_ID /Nmonths_with_transactions=n.
* attaching the results back to original data.
dataset activate orig.
match files /file = * /table = agg2 / by Cli_ID.