* (Вопрос) Может, у кого завалялся синтаксис чтобы сгенерировать, скажем, 1000 переменных, каждая из которых будет рандомизированным вариантом некоторой исходной переменной из текущего файла данных? В моём файле 4 переменных. 3 идентификаторные и 4-ая, называющаяся "countvar". Мне нужно 1000 рандомизаций countvar. * (Ответ) Автор: rlevesque@videotron.ca, размещено в SPSSX-L 13.8.2001. * http://www.spsstools.net SET MPRINT=no. *///////////////////////////. DEFINE !random (id=!TOKENS(1) /myvar=!TOKENS(1) /nb=!TOKENS(1) /others=!CMDEND) /* id должна быть числовая переменная без дубликатов.*/ /* myvar переменная, значения которой рандомизируются.*/ /* nb число переменных, содержащих значения "myvar" в конечном файле данных*/ /* others прочие переменные, значения которых следует сохранить вместе с myvar и id */ LOOP cnt=1 TO !nb. XSAVE OUTFILE='c:\\temp\\temp.sav' /KEEP=cnt !id !myvar !others. END LOOP. EXECUTE. GET FILE='c:\\temp\\temp.sav'. COMPUTE draw=UNIFORM(1). RANK VARIABLES=draw BY cnt /RANK INTO rdraw. SORT CASES BY rdraw cnt. DO IF $CASENUM>1 & rdraw=LAG(rdraw). COMPUTE id=LAG(id). END IF. VECTOR v(!nb F8.0). COMPUTE v(cnt)=!myvar. AGGREGATE /OUTFILE=* /BREAK=id /!others=FIRST(!others) /v1 TO !CONCAT('v',!nb) = FIRST(v1 TO !CONCAT('v',!nb)). * Следующие команды просто чтобы показать, что все переменные имеют одни и те же средние и стандартные отклонения. * Все они содержат одни и те же значения, но в разном порядке. SUMMARIZE /TABLES=v1 TO !CONCAT('v',!nb) /FORMAT=NOLIST TOTAL /TITLE='Итоги по наблюдениям' /MISSING=VARIABLE /CELLS=COUNT SUM STDDEV . !ENDDEFINE. *///////////////////////////. SET MPRINT=yes. *Пример 1. GET FILE='C:\\Program Files\\SPSS\\Employee data.sav' /KEEP=id gender bdate salary. !random id=id nb=15 myvar=salary others=gender bdate. *Пример 2. GET FILE='C:\\Program Files\\SPSS\\World95.sav' /KEEP=country density populatn. COMPUTE id=$CASENUM. !random id=id nb=10 myvar=populatn others=country density.