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
*(Вопрос) Имеются результаты теста по учащимся 90 школ. Мне требуется построить в SPSS ящичковую
диаграмму ("ящик-с-усами", boxplot) для каждой школы по отдельности по принципу
один ящик - один график, т.е. 90 графиков, каждый из которых печатается на
отдельной странице. Я хочу выполнить это через пакетную обработку и могу запросить её
с помощью следующего синтаксиса:
GET
  FILE='D:\\DDrive\\ADoc\\Board\\SchoolsCPS\\Data\\Ap\\test.sav'.
SORT CASES BY
  school (A) .
SPLIT FILE
  SEPARATE BY school .
EXAMINE
  VARIABLES=rge BY grade
  /PLOT=BOXPLOT
  /STATISTICS=NONE/NOTOTAL
  /MISSING=REPORT.

Однако, как я узнал из "Руководства по синтаксису SPSS", подкоманда PLOT
даёт мало возможностей по форматированию графика. В подкоманде /BOX команды IGRAPH я
нашёл кое-какие установки, которые мне требовались. Хотя, например, я всё ещё не могу найти
способа установки временных отметок. Так или иначе, если я использую вместо EXAMINE... /PLOT команду 
IGRAPH, то отдельных результатов для каждой школы я не могу получить. Есть решение?

*********************************************.
*(Ответ) Автор: rlevesque@videotron.ca, 06.10.2001.
*********************************************.

GET
  FILE='c:\\program files\\spss\\employee data.sav'.

SET MPRINT=no /PRINTBACK=listing.

*/////////////////////////////.
DEFINE !ibox1(cat=!TOKENS(1) /var1=!TOKENS(1) /var2=!TOKENS(1))
AUTORECODE !cat /INTO cat$.
COMPUTE dummy=1.

SAVE OUTFILE='c:\\temp\\mydata.sav'.

AGGREGATE
  /OUTFILE=*
  /BREAK=dummy
  /NbCat = MAX(cat$).
WRITE OUTFILE='c:\\temp\\syntax.sps' /'DEFINE !nbcat()',NbCat,'!ENDDEFINE.'.
EXECUTE.
INCLUDE FILE='c:\\temp\\syntax.sps'.
!ibox2 var1=!var1 var2=!var2.
!ENDDEFINE.
*/////////////////////////////.

* Мы используем отдельный макрос ibox2, чтобы синтаксис, созданный в ibox1 был 
доступен для использования.

*/////////////////////////////.
DEFINE !ibox2 (var1=!TOKENS(1) /var2=!TOKENS(1))
!DO !cat=1 !TO !EVAL(!nbcat)
GET FILE='c:\\temp\\mydata.sav'.
SELECT IF cat$=!cat.
IGRAPH /VIEWNAME='Boxplot' /X1 = VAR(!var2) TYPE = CATEGORICAL /Y =
  VAR(!var1) TYPE = SCALE  /COORDINATE = VERTICAL  /X1LENGTH=3.0 /YLENGTH=3.0
  /X2LENGTH=3.0 /CHARTLOOK='NONE' /CATORDER VAR(!var2) (ASCENDING VALUES
  OMITEMPTY) /BOX OUTLIERS = ON EXTREME = ON MEDIAN = ON WHISKER = T.
!DOEND
!ENDDEFINE.
*/////////////////////////////.

SET MPRINT=yes.
!ibox1 cat=jobcat  var1=salary  var2=minority.

* В вашем частном случае макрос следует вызывать так:.
!ibox1 cat=school var1=rge var2=grade.