* Функция LAG с переменным аргументом. * Функция LAG работает лишь с постоянным аргументом сдвига. * Следующий синтаксис производит смещение переменных по формуле LAG(y,lgx), где y - сдвигаемая переменная, а lgx - переменная, из которой берётся аргумент сдвига. * Автор: Raynald Levesque, rlevesque@videotron.ca (решение № 1 размещено в конференции usenet 06.26.2000). DATA LIST FREE / LGX Y. BEGIN DATA 1 5 2 6 1 4 3 3 1 2 3 5 2 3 1 3 3 2 2 2 3 4 2 5 1 6 3 7 2 5 1 4 3 3 2 3 1 6 3 7 2 5 3 3 2 5 1 3 3 2 2 1 3 6 2 8 2 7 2 5 2 3 2 9 END DATA. SAVE OUTFILE='c:\\temp\\mydata.sav'. **********************. *** РЕШЕНИЕ 1: предполагает, что мы ЗНАЕМ максимальное значение переменной lgx. **********************. DO REPEAT cnt=1 TO 20. IF lgx=cnt lagg=lag(y,cnt). END REPEAT. EXE. **********************. *** РЕШЕНИЕ 2: допускает, что мы НЕ ЗНАЕМ минимум и максимум переменной lgx. **********************. GET FILE='c:\\temp\\mydata.sav'. COMPUTE dummy=1. AGGREGATE /OUTFILE=* /BREAK=dummy /lagmin = MIN(lgx) /lagmax = MAX(lgx). WRITE OUTFILE='c:\\temp\\temp.sps' /'DO REPEAT cnt='lagmin' TO 'lagmax'.' /'IF lgx=cnt lagg=lag(y,cnt).' /'END REPEAT.'. EXECUTE. GET FILE='c:\\temp\\mydata.sav'. INCLUDE FILE='c:\\temp\\temp.sps'. EXECUTE.