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
* (Вопрос) Мой массив данных включает списки выпускников средней школы: тех, кто продолжил образование (InSchool=1) и тех, кто не продолжил (InSchool=0). Массив также включает переменные "Пол" (Gender) и "Учебная программа" (TypeSchl), по которой было продолжено образование (выделяем 4-годичные, 2-годичные, менее, чем двухгодичные программы обучения). Нужна столбцовая диаграмма, показывающая разделения по типам программ между представителями разных полов, при условии, что InSchool=1. Т.е., первая часть графика показывает проценты по TypeSchl для всех женщин, а вторая - то же распределение, но для мужчин. Те, кто не продолжал обучение, в анализ не включаются. В каждой части графика сумма процентов должна быть равна 100.

* (Ответ) размещён rlevesque@videotron.ca в SPSSX-L 29.01.2002.

INPUT PROGRAM.
LOOP id=1 TO 200.
COMPUTE inschool=UNIFORM(1)<.5.
COMPUTE gender=UNIFORM(1)<.5.
COMPUTE typeschl=TRUNC(1+UNIFORM(3)).
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
LIST /CASES=FROM 1 TO 10.

SELECT IF inschool=1.

* Подсчитываем частоту каждой категории.
AGGREGATE
  /OUTFILE=*
  /BREAK= gender typeschl
  /id_1 = N(id).

* Взвешиваем по частоте каждой категории, т.е. файл получается эквивалентным исходному файлу.
WEIGHT BY id_1.

* Подсчитываем частоты для мужчин и женщин, временно сохраняем во внешний временный файл.
AGGREGATE
  /OUTFILE='c:\\temp\\temp.sav'
  /BREAK= gender
  /id_g = N(id_1).

* Добавляем к текущему файлу частоты для мужчин и женщин из внешнего временного файла.
MATCH FILES /FILE=*
 /TABLE='C:\\Temp\\temp.sav'
 /BY gender.

* Подсчитываем и отображаем проценты (общий процент по полу равен 100).
COMPUTE pc=(id_1/id_g)*100.
VARIABLE LABEL pc 'Процент'.

GRAPH
  /BAR(GROUPED)=MEAN(pc) BY gender BY typeschl
  /MISSING=REPORT.