Листинг (распечатка значений) в цикле
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 | * ВОПРОС: . * Из множества переменных в моём файле меня интересуют переменные с v191 по v247. * Переменные v191, v192 и v193 формируют группу. * Переменные v194, v195 и v196 формируют другую группу и т.д. * Для каждой группы я хочу вывести список наблюдений, для которых значение первой переменной из группы = 1, а второе =0. * Команда LIST недоступна в циклах loop. Как быть? * ОТВЕТ. Автор: rlevesque@videotron.ca. * Создадим данные для примера. NEW FILE. INPUT PROGRAM. NUMERIC v191 TO v247. LOOP v1=1 TO 20. VECTOR v=v191 TO v247. LOOP #cnt=1 TO 57. DO IF MODE(#cnt,3)=0. COMPUTE v(#cnt)=UNIFORM(1). ELSE. COMPUTE v(#cnt)=UNIFORM(1)>.5. END IF. END LOOP. END CASE. END LOOP. END FILE. END INPUT PROGRAM. EXECUTE. * Определим макрос, он сделает то, что нам нужно. */////////////////////////////////. DEFINE !listvar(). FILTER OFF. !DO !cnt=191 !TO 247 !BY 3. FILTER OFF. COMPUTE L=0. !LET !a1=!CONCAT('v',!cnt). !LET !a2=!CONCAT('v',!LENGTH(!CONCAT(!BLANKS(!cnt)," "))). !LET !a3=!CONCAT('v',!LENGTH(!CONCAT(!BLANKS(!cnt)," "))). IF ( !a1=1 & !a2=0 ) L=1. FILTER BY L. LIST v1 !a1 !a2 !a3. !DOEND. !ENDDEFINE. */////////////////////////////////. *Вызываем макрос. !listvar. |
Related pages
...