Вставить наблюдения с пропущенными датами (в пределах одного id)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | *(Вопрос) Мы хотели бы вставить пустые записи в файл для тех клиентов, у кого присутствуют не все записи. Обычно пропуски случаются в середине месяца. Например, для клиента номер 123 у нас есть записи от 1.3.00, 2.3.00, 6.3.00 и 7.3.00, но нет записей от 3-го, 4-го и 5-го числа. * Как можно их вставить?. *(Ответ) Решение размещено в новостной группе SPSS 03.11.2002. Автор: Raynald Levesque. DATA LIST LIST /id(F8.0) date1(SDATE). BEGIN DATA 122 2000/1/1 122 2000/1/2 123 2000/3/1 123 2000/3/2 123 2000/3/6 END DATA. LIST. VARIABLE WIDTH date1(11). SORT CASES BY id date1(A). DO IF $CASENUM>1 & id=LAG(id). COMPUTE days1=CTIME.DAYS(date1-LAG(date1)). END IF. CREATE days2=LEAD(days1,1). COMPUTE #oneday=60*60*24. DO IF MISSING(days2) OR days2=1. XSAVE OUTFILE='c:\\temp\\temp.sav'. ELSE. LOOP cnt=1 TO days2. + COMPUTE date1=LAG(date1)+#oneday*cnt. + XSAVE OUTFILE='c:\\temp\\temp1.sav'. END LOOP. END IF. EXECUTE. ADD FILES FILE='c:\\temp\\temp.sav' /FILE='c:\\temp\\temp1.sav' /DROP=days1 days2 cnt. SORT CASES BY id date1(A). |
Related pages
...