* (Вопрос) Я печатаю большое количество столбцовых диаграмм (ответы студентов на разные вопросы). Для каждого графика мне надо исключить категории с частотами, меньшими 5. Сейчас я вручную убираю категории, которые должны быть пропущены, но я подозреваю, что есть лучшее средство. Буду глубоко признателен за идеи. *(Ответ) Размещён в SPSSX-L rlevesque@videotron.ca 21.09.2001. Прилагаются 2 разных макроса. Выберите тот, который полнее отвечает вашим задачам. DATA LIST LIST /age prog year. BEGIN DATA 25 1 2 25 1 2 25 1 2 25 1 2 25 1 4 25 1 4 25 1 4 25 1 4 25 1 4 25 1 4 25 1 7 25 1 7 25 1 7 25 1 7 25 1 2 26 1 2 27 2 1 27 2 1 27 2 1 27 2 1 27 2 1 27 2 1 END DATA. SET MPRINT=no. *////////////////////. DEFINE !chart (minnb=!TOKENS(1) /cat=!TOKENS(1)) FILTER OFF. * Сортировка необходима для последующего выполнения команды AGGREGATE и MATCH FILES. COMPUTE dummy=1. SORT CASES BY !cat. !LET !fname=!QUOTE(!CONCAT('C:\\temp\\',!cat,'.SAV')) AGGREGATE /OUTFILE=!fname /PRESORTED /BREAK=!cat /nb = N(dummy). MATCH FILES /FILE=* /TABLE=!fname /BY !cat. FREQUENCY VARIABLES=!cat. COMPUTE flag=(nb>=!minnb). FILTER BY flag. GRAPH /BAR(SIMPLE)=COUNT BY !cat /MISSING=REPORT. * Delete the variable nb. FILTER OFF. MATCH FILES FILE=* /DROP=nb flag dummy. EXECUTE. !ENDDEFINE. *////////////////////. SET MPRINT=yes. !chart minnb=5 cat=age. !chart minnb=6 cat=prog. !chart minnb=5 cat=year. * Выше приведённый метод хорош, если вам нужно что-то ещё делать с данными и результатами между печатью графиков. * Если же нужно напечатать серию графиков с одной и той же минимальной частотой, следующий макрос будет более подходящим. SET MPRINT=no. *////////////////////. DEFINE !chart2 (minnb=!TOKENS(1) /cats=!CMDEND) /* minnb = минимальная частота, подлежащая отображению на графике*/. /* cats = имена категориальных переменных, для которых нужны графики*/. COMPUTE dummy=1. !DO !cat !IN (!cats) FILTER OFF. * Сортировка необходима для последующего выполнения команды AGGREGATE и MATCH FILES. SORT CASES BY !cat. !LET !fname=!QUOTE(!CONCAT('C:\\temp\\',!cat,'.SAV')) AGGREGATE /OUTFILE=!fname /PRESORTED /BREAK=!cat /nb = N(dummy). MATCH FILES /FILE=* /TABLE=!fname /BY !cat. FREQUENCY VARIABLES=!cat. LIST. COMPUTE flag=(nb>=!minnb). FILTER BY flag. GRAPH /BAR(SIMPLE)=COUNT BY !cat /MISSING=REPORT. * Убираем переменную nb с частотами категорий. MATCH FILES FILE=* /DROP=nb. !DOEND * Убираем вспомогательную переменную dummy. FILTER OFF. MATCH FILES FILE=* /DROP=dummy flag. !ENDDEFINE. */////////////////// SET MPRINT=yes. !chart2 minnb=5 cats= age prog year. EXECUTE.