Я хотел бы попросить помощи в проблеме SAS, связанной со счетчиком, основанным на нескольких условиях.
У меня есть набор данных, содержащий информацию о посещениях клиентов сотрудниками отдела продаж. Однако набор данных организован по задачам, которые выполнялись во время посещений, поэтому он может содержать несколько записей для одного и того же посещения. Сами посещения могут охватывать несколько дней. В настоящее время набор данных отсортирован по общему идентификатору.
Также вы можете найти скриншот набора данных здесь: Извлечение данных
Мне нужно ввести счетчик, который четко идентифицирует записи, относящиеся к одному и тому же посещению. Счетчик должен основываться на следующих условиях:
- Новый счетчик посещений для той же комбинации «сотрудник-клиент» только в том случае, если следующие условия для дат НЕ выполняются: 1) записи относятся к соседним дням и 2) одна запись не «встроена» в запись о текущем посещении.
- Я считаю, что нашел решение сам. Вероятно, это немного грубая сила, но, похоже, она хорошо работает для более чем 300 тысяч записей.
StartDate и EndDate в этом смысле определяют диапазон времени, что важно для классификации соответствующих записей.
Это набор данных (включая предполагаемое решение и комментарии для каждой записи, которые могут помочь прояснить приведенные выше условия):
Перед началом я отсортировал свой набор данных по EmployeeNo, CustomerNo, StartDate и EndDate. Затем я попытался использовать несколько комбинаций SET/BY и First.Variable, что позволяет мне правильно реализовать условие «сотрудник-клиент». Однако я борюсь с условиями даты.
Вот текущее состояние моего кода.
Любые советы высоко ценится.
Data Count_Visits;
Set Data;
BY EmployeeNo CustomerNo;
Retain Counter;
IF First.EmployeeNo THEN Counter +1;
ELSE IF First.CustomerNo THEN Counter +1;
Keep ID StartDate EndDate EmployeeNo
CustomerNo Counter;
Run;
С уважением, мейб
Новый счетчик посещений для каждой новой комбинации «сотрудник-клиент».