這是我的第一篇文章,所以請讓我知道,如果我不夠清楚。這是我想要做的 - 這是我的數據集。我的做法是有一個滯後的做循環,但結果是垃圾。現在SAS做循環+滯後函數?
data a;
input @1 obs @4 mindate mmddyy10. @15 maxdate mmddyy10.;
format mindate maxdate date9.;
datalines;
1 01/02/2013 01/05/2013
2 01/02/2013 01/05/2013
3 01/02/2013 01/05/2013
4 01/03/2013 01/06/2013
5 02/02/2013 02/08/2013
6 02/02/2013 02/08/2013
7 02/02/2013 02/08/2013
8 03/10/2013 03/11/2013
9 04/02/2013 04/22/2013
10 04/10/2013 04/22/2013
11 05/04/2013 05/07/2013
12 06/10/2013 06/20/2013
;
run;
,我想產生一個新列 - 「替換」基於以下邏輯:
- 如果其滯後組件的maxDate之前發生了記錄的MINDATE,它不能進行更換它。如果不能替代,則跳過前進(如2,3,4不能替換1,但可以替換5)。
- 否則...如果mindate小於30天,替換= Y.如果不是,則替換= N.一旦一個記錄替換另一個(所以在這種情況下,5替換1,因爲02/02/2013但是如果它是一個N的上面一個記錄,它仍然可以是一個其他記錄的Y,所以,現在對6進行評估對2, 7對3等,因爲這兩個組合都是「Y」,所以現在評估8與4相比,但是因爲其相對於4的最大值的相對大於30,它是N.但是,它接着針對
- 評估在...
我應該在100個記錄數據集中,這將暗示第100條記錄可以在技術上取代第1條記錄,所以我一直在嘗試循環內的滯後。任何提示/幫助非常感謝!預期輸出:
obs mindate maxdate Replacement
1 02JAN2013 05JAN2013
2 02JAN2013 05JAN2013
3 02JAN2013 05JAN2013
4 03JAN2013 06JAN2013
5 02FEB2013 08FEB2013 Y
6 02FEB2013 08FEB2013 Y
7 02FEB2013 08FEB2013 Y
8 10MAR2013 11MAR2013 Y
9 02APR2013 22APR2013 Y
10 10APR2013 22APR2013 N
11 04MAY2013 07MAY2013 Y
12 10JUN2013 20JUN2013 Y
你能發佈你的預期輸出嗎?我在想,SQL自加入是你需要做的,而不是循環/滯後。你嘗試過的任何代碼都有幫助:) – Reeza 2015-02-10 04:58:58
@Reeza - 這可能也可以使用雙DOW循環完成。 – user667489 2015-02-10 08:24:45
@ Reeza。謝謝。預期的輸出是: – AidKulesh 2015-02-10 14:54:55