数据结构如下:
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 此方法有效吗?有没有更简单的方法可以做到这一点?我觉得这可能不是最简单的解决方案,但我目前还没有主意。
答案 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.