* Пример использования алгоритма расчёта расстояния Левенштейна. DATA LIST LIST /s1 s2(2 A20). BEGIN DATA 'Asdfghggfda' 'fasdfasdfasd' 'Agoirjvofid' 'Bsdfghggfda' 'Dfuu9weroffg' 'Dfuu8weroffg' 'Dfdagfsdfgd' 'dfsadf a f afdas' 'Fdsafd asdfas' 'poihjuijioujoi' 'fadadf dafda' 'fBCadf dafda' 'Adafdghfgdf a' 'foiugfyy7pouihiuh' END DATA. COMPUTE casenb=$CASENUM. XSAVE OUTFILE='c:\\temp\\main data file.sav'. * Определим макрос, содержащий число наблюдений. COMPUTE nobreak=1. AGGREGATE OUTFILE=* /PRESORTED /BREAK=nobreak /N=n. WRITE OUTFILE='c:\\temp\\nb cases.sps' /'DEFINE !nb()'n(F10.9)'!ENDDEFINE.'. EXECUTE. INCLUDE 'c:\\temp\\nb cases.sps'. GET FILE='c:\\temp\\main data file.sav'. RENAME VARIABLE (casenb=cases1). * Создаём файл, который будет содержать все комбинации строк s1 и s2. LOOP #cnt=1 TO !nb. - XSAVE OUTFILE='c:\\temp\\expands1.sav' /KEEP=s1 cases1. END LOOP. EXECUTE. GET FILE='c:\\temp\\main data file.sav'. LOOP cnt=1 TO !nb. - XSAVE OUTFILE='c:\\temp\\expands2.sav' /KEEP=s2 casenb cnt. END LOOP. EXECUTE. GET FILE='c:\\temp\\expands2.sav' . SORT CASES BY cnt casenb. MATCH FILES FILE=* /FILE='c:\\temp\\expands1.sav' /DROP=cnt. SAVE OUTFILE='c:\\temp\\expanded file.sav'. GET FILE='c:\\temp\\expanded file.sav' /KEEP=s1 s2 cases1 casenb. * ЗДЕСЬ ОСТАНАВЛИВАЕМСЯ. * Запускаем скрипт. * И лишь после этого выполняем оставшуюся часть синтаксиса. DATA LIST FILE='c:\\temp\\distances.txt' LIST /d. MATCH FILES FILE='c:\\temp\\expanded file.sav' /FILE=*. SORT CASES BY s1 d. AGGREGATE OUTFILE=* /PRESORTED /BREAK=s1 /s2=FIRST(s2) /d=FIRST(d) /cases1=FIRST(cases1). SORT CASES BY cases1.