Осуществить n случайных разбиений файла на 2 части
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 42 43 44 45 46 47 48 49 50 51 52 53 | * ВОПРОС: мне требуется случайным образом разделить файл на 2 части. Сделать это надо n раз, каждый раз разделяя на 2 части исходный файл. При этом я хочу сохранить результаты всех n разделений в одном и том же файле данных. * Ответ: Ray. * www.spsstools.net *. SET MPRINT=no. * Создадим пример данных для иллюстрации. NEW file. input program. loop id_org=1 to 10. leave id_org. COMPUTE #nb_ees=4+TRUNC(UNIFORM(10)). loop id_ee=1 to #nb_ees. + compute dept=1+TRUNC(uniform(5)). + end case. end loop. end loop. end file. end input program. execute. SAVE OUTFILE='c:\\temp\\temp.sav'. * Определим макрос. *///////////////////////////////. DEFINE !do_job (n_samp=!TOKENS(1)) !DO !cnt=1 !TO !n_samp GET FILE='c:\\temp\\temp.sav'. COMPUTE randval = UNIFORM(1). SORT CASES BY id_org randval. COMPUTE seqnum = $casenum. COMPUTE choose1 = MOD(seqnum,2). * В переменной samplen будет номер варианта разделения. COMPUTE splitn=!cnt. * Условие IF добавлено А.Б. для сохраниения результатов всех разделений в один файл. !IF (!cnt=1) !THEN SAVE OUTFILE='c:\\temp\\data.sav'. !ELSE ADD FILES FILE=* /FILE='c:\\temp\\data.sav'. SAVE OUTFILE='c:\\temp\\data.sav'. !IFEND. !DOEND. !ENDDEFINE. *///////////////////////////////. SET MPRINT=yes. * Вызовем макрос. !do_job n_samp=3. * Укажите в качестве значения n_samp нужное число вариантов разделений. |
Related pages
...