Как создать индикатор, который просматривает дату и уникальный идентификатор клиента? - PullRequest
1 голос
/ 12 июня 2019

Структура данных выглядит следующим образом:

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 года, то с октября 2017 года по июнь 2019 года числомесяц, им нужно иметь хотя бы одну транзакцию в 21).А затем создайте еще один счетчик для циклического прохождения каждого M_YR (месяц, год) и добавьте 1, если уникальный клиент имел транзакцию в данный месяц-год (Count_client) ... (например, если клиент имел хотя бы одну транзакциюмесяц с октября 2017 года по июнь 2019 года счетчик будет 21)

Если я сравню эти две переменные (Count_client и Count_month), если Count_client

Этот метод работает?Есть ли более простой способ сделать это?Я чувствую, что это, вероятно, не самое простое решение, но в настоящее время у меня нет идей ..

1 Ответ

0 голосов
/ 17 июня 2019

Чтобы рассчитать количество месяцев между первой транзакцией и текущей датой, вы можете использовать:

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.
...