Подавление вывода категорий с малыми частотами в столбцовых диаграммах
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | * (Вопрос) Я печатаю большое количество столбцовых диаграмм (ответы студентов на разные вопросы). Для каждого графика мне надо исключить категории с частотами, меньшими 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. |
Related pages
...