SPSS 中的循环图

Graphs in a loop in SPSS

我有一个在循环外工作的图表,但是当它包含在循环中时,我收到消息 "running inline gpl" 和错误消息 "GPL error: id('graphdataset') not a quoted string: 'graphdataset'." 有没有特殊的方法来 运行 我缺少循环中的图表?

DEFINE !ess1 (inum=!charend ('/') 
/ iname=!charend ('/')
/ iname2=!charend ('/')
/ g1=!charend ('/')
/ g2=!charend ('/')
/ g3=!charend ('/')
/ g4=!charend ('/')).

RECODE INST 
    (!inum=1) 
    ( !g1 = 2) 
    (!g2= 3)    
    (!g3=4)
    (!g4=5)
    into cgroup.
MISSING VALUES cgroup(-9).
variable labels cgroup 'Comparison Group'.
value labels cgroup 1 !iname2 2 'Thing1' 3 'Thing2' 4 'Thing3' 5 'Thing4'.
EXECUTE.

USE ALL.
VARIABLE LEVEL ALL (NOMINAL).

CTABLES
  /VLABELS VARIABLES=satisf cgroup DISPLAY=DEFAULT
  /TABLE cgroup  [ROWPCT.COUNT PCT40.1] BY satisf
  /SLABELS VISIBLE=NO
  /CATEGORIES VARIABLES=satisf cgroup ORDER=A KEY=VALUE EMPTY=INCLUDE TOTAL=YES LABEL="Overall" POSITION=AFTER
  MISSING=EXCLUDE
  /TITLES
   TITLE= 'Overall, how satisfied have you been with this example syntax?'.

RENAME VARIABLES  (sinstql sdiscus sadvising sadmresp ssoclife scampcom slivecom=Var1 Var2 Var3 Var4 Var5 Var6 Var7). 

varstocases
/make Likert From Var1 to Var7
/index Question (Likert).

*I need to make a variable to panel by.
compute panel = 0.
if Likert > 2 panel = 1.

*Aggregate N per question.
AGGREGATE OUTFILE=* MODE=ADDVARIABLES
/BREAK Question
/TotalPerQ = N.

*Use trans to make a percent.
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=Question MEAN(TotalPerQ)[name="MeanTotalPerQ"] COUNT()[name="COUNT"] Likert panel
MISSING=LISTWISE REPORTMISSING=NO
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
COORD: transpose(mirror(rect(dim(1,2))))
DATA: Question=col(source(s), name("Question"), unit.category())
DATA: COUNT=col(source(s), name("COUNT"))
DATA: MeanTotalPerQ=col(source(s), name("MeanTotalPerQ"))
DATA: Likert=col(source(s), name("Likert"), unit.category())
DATA: panel=col(source(s), name("panel"), unit.category())
TRANS: Perc = eval((COUNT/MeanTotalPerQ)*100)
GUIDE: axis(dim(1), label("Satisfaction"))
GUIDE: axis(dim(3), null(), gap(0px))
GUIDE: legend(aesthetic(aesthetic.color.interior), null())
SCALE: linear(dim(2), include(0))
SCALE: cat(aesthetic(aesthetic.color.interior), sort.values("1","2","4","3"), map(("1", color.red), ("2", color.lightpink), ("3", color.lightgreen), ("4", color.green)))
ELEMENT: interval.stack(position(Question*Perc*panel), color.interior(Likert),shape.interior(shape.square),transparency.exterior(transparency."1"))
END GPL.
******************************.

dataset close *.

get file= 'FilePath.sav'.

DELETE VARIABLES cgroup.

OUTPUT EXPORT
  /CONTENTS  EXPORT=VISIBLE  LAYERS=PRINTSETTING  MODELVIEWS=PRINTSETTING
  /PDF  DOCUMENTFILE=!Quote(!Concat('Y:\Surveys\ESS15\COFHE ESS 2015 Comparison Report ',!iname,'.pdf'))
     EMBEDBOOKMARKS=YES  EMBEDFONTS=YES.

OUTPUT SAVE
OUTFILE=!Quote(!Concat('Y:\Surveys\ESS15\COFHE ESS 2015 Comparison Report ',!iname,'.spv'))

OUTPUT CLOSE *. 
OUTPUT NEW.

!ENDDEFINE.

!ess1 inum=1/iname=Name1/ iname2='Name1'/g1= 2,3,4,5,6,7,8,9,10,11,12,13 /g2= 21,22,23,24,25,26,27,29/g3=31,32,33,34,35,36,37,38/g4=41,42,43,44,45/.
!ess1 inum=2 /iname=Name2 /iname2='Name2'/g1= 1,3,4,5,6,7,8,9,10,11,12,13 /g2= 21,22,23,24,25,26,27,29/g3=31,32,33,34,35,36,37,38/g4=41,42,43,44,45/.
!ess1 inum=3 /iname=Name3 /iname2='Name3'/g1= 1,2,4,5,6,7,8,9,10,11,12,13 /g2= 21,22,23,24,25,26,27,29/g3=31,32,33,34,35,36,37,38/g4=41,42,43,44,45/.

GPL 不支持宏,因为 GPL 语法不遵循标准的 SPSS Statistics 语法,宏展开不可靠。有时它会起作用,但 Python 可编程性是合适的机制。

可以找到有关如何执行此操作的演示 here