我想針對涉及基於多個條件的計數器的SAS問題尋求幫助。根據多個條件在SAS中添加計數器
我有一個數據集,其中包含銷售人員的客戶訪問。但是,數據集是按訪問期間執行的任務組織的,因此它可以包含多次訪問相同的條目。訪問本身可以跨越幾天。目前,數據集按照通用ID進行排序。
請還發現這裏的數據集的截圖:Data extract
我需要引入一個計數器明確標識屬於同一訪問的條目。該計數器應根據以下條件:
爲每一位新員工的客戶組合- 新的訪問計數器。
- 只有當日期的以下條件不成立時,才允許同一員工 - 客戶組合的新訪問計數器:1)條目來自相鄰的日子,並且2)一個條目沒有「嵌入」正在進行的訪問的條目
StartDate和EndDate在這個意義上定義了一個時間範圍,這對於相應條目的分類很重要。
這是數據集(包括預期的溶液和評論爲每個條目,可能有助於闡明上述條件):
ID的StartDate結束日期爲employeeno CustomerNo擬解決的評論 1 2009年1月6日07.01.2009 1 5 1相鄰日期 2 07.01.2009 08.01.2009 1 5 1相鄰日期 3 08.01.2009 08.01.2009 1 5 1相鄰日期 4 05.01.2009 06.01.2009 2 7 2相鄰日期 5 06.01.2009 07.01.2009 2 7 2相鄰日期 6 05.01.2009 09.01.2009 3 1 3嵌入式條目 7 08.01.2009 08.01.2009 3 1 3嵌入式條目 8 09.01.2009 13.01.2009 4 2 4相鄰日期 9 13.01.2009 13.01.2009 4 2 4相鄰日期 10 05.01.2009 13.01.2009 5 3 5 - 11 19.01.2009 23.01.2009 6 3 6單獨,因爲不同員工 12 05.01.2009 16.01.2009 6 3 7同一員工和客戶,但沒有相鄰日期 13 02.02.2009 03.02.2009 7 8 8相鄰日期 14 03.02.2009 04.02.2009 7 8 8相鄰日期 15 22.09.2010 22.09.2010 8 4 9 - 16 22.09.2010 22.09.2010 8 4 9 - 17 21.09.2010 21.09.2010 9 1 10相鄰日期 18 21.09.2010 24.09.2010 9 1 10相鄰日期 19 12.01.2009 22.01.2009 10 6 11相鄰日期 20 23.01.2009 23.01.2009 10 6 11相鄰日期s 21 12.01.2009 19.01.2009 10 6 11嵌入式登錄 22 26.01.2009 26.01.2009 2 9 12當天 23 26.01.2009 26.01.2009 2 9 12當天 24 26.01.2009 26.01.2009 2 9 12當天 25 07.05.2012 07.05.2012 1 2 13 - 26 09.05.2012 09.05.2012 1 2 14另外,由於沒有相鄰日子 27 09.07.2013 09.07.2013 3 10 15相鄰日子 28 10.07.2013 11.07.2013 3 10 15相鄰日期 29 08.09.2014 08.09.2014 4 1 16相鄰日期 30 09.09.2014 10.09.2014 4 1 16相鄰日期 31 08.09。2014 08.09.2014 4 1 16相鄰日期 32 15.09.2014 15.09.2014 4 1 17另外,由於沒有相鄰日期 33 05.09.2014 05.09.2014 5 7 18相鄰日期 34 04.09.2014 05.09.2014 5 7 18相鄰日子 35 01.06.2015 01.06.2015 7 4 19獨立櫃臺,因爲沒有相鄰的日子 36 03.06.2015 03.06.2015 7 4 20獨立櫃臺,因爲沒有相鄰的日子 37 2015年6月6日2015年6月12日7 4 21相鄰日子 38 09.06.2015 10.06.2015 7 4 21相鄰日子 39 09.06.2015 09.06.2015 10 4 22另外,由於不同的僱員但相鄰日子 40 11.06.2015 12.06.2015 10 4 22另外,由於不同的僱員但相鄰的日子 41 10.06.2015 10.06.2015 10 4 22另外,由於不同的員工bu t相鄰日子
開始之前我已經按照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;
任何意見是非常感謝。
問候, 馬貝
請發佈您到目前爲止嘗試過的代碼。將您的示例輸入和輸出數據作爲文本發佈到問題中,而不是圖像。 – user667489
將數據包含爲文本,而不是圖像。如果有人想嘗試他們測試的解決方案,他們需要手動輸入數據。 – Reeza
感謝您的建議,只是編輯我的帖子。 – mabe