我正在使用SPSS(v.20)并希望使用语法为每个感兴趣的变量创建一个图表。我有两种图形示例:
示例#1:
GGRAPH
/GRAPHDATASET NAME="graphdataset"
VARIABLES=change_WIraw[LEVEL=ratio]
MISSING=LISTWISE REPORTMISSING=NO
/GRAPHSPEC SOURCE=VIZTEMPLATE(NAME="Histogram with Normal Distribution"[LOCATION=LOCAL]
MAPPING( "x"="change_WIraw"[DATASET="graphdataset"]))
VIZSTYLESHEET="Traditional"[LOCATION=LOCAL]
LABEL='HISTOGRAM WITH NORMAL DISTRIBUTION: change_WIraw'
DEFAULTTEMPLATE=NO.
示例#2:
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=GROUP change_WIraw MISSING=LISTWISE
REPORTMISSING=NO
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: GROUP=col(source(s), name("GROUP"), unit.category())
DATA: change_CTBWss=col(source(s), name("change_WIraw"))
DATA: id=col(source(s), name("$CASENUM"), unit.category())
GUIDE: axis(dim(1), label("GROUP"))
GUIDE: axis(dim(2), label("change_WIraw"))
SCALE: cat(dim(1), include("1", "2", "3", "4"))
SCALE: linear(dim(2), include(0))
ELEMENT: schema(position(bin.quantile.letter(GROUP*change_WIraw)), label(id))
END GPL.
我想运行一个循环,以便我可以对其他许多变量进行编程(交换“change_WIraw”)。我很想得到一些指导,谢谢!我希望这是一个正确的论坛。 (我发现了类似的问题,但它们的功能更简单,比如频率。)
答案 0 :(得分:2)
你最好的选择 - 远 - 就是使用Python。如果你还没有使用Python for SPSS,请参阅www.pythonforspss.org了解一些非常基本的基础知识。
然后尝试这个:用实际的变量名替换change_WIraw to v10
(仅在第二行)。假设它们在您的活动DataSet中相邻。然后运行:
begin program.
variables='change_WIraw to v10'
import spss,spssaux
vList=spssaux.VariableDict().expand(variables)
for vrbl in vList:
spss.Submit("""
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=GROUP %(vrbl)s MISSING=LISTWISE
REPORTMISSING=NO
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: GROUP=col(source(s), name("GROUP"), unit.category())
DATA: change_CTBWss=col(source(s), name("%(vrbl)s"))
DATA: id=col(source(s), name("$CASENUM"), unit.category())
GUIDE: axis(dim(1), label("GROUP"))
GUIDE: axis(dim(2), label("%(vrbl)s"))
SCALE: cat(dim(1), include("1", "2", "3", "4"))
SCALE: linear(dim(2), include(0))
ELEMENT: schema(position(bin.quantile.letter(GROUP*%(vrbl)s)), label(id))
END GPL."""%locals())
end program.
对于您指定的每个变量,语法将运行一次,并使用变量名称替换%(vrbl)s
。
答案 1 :(得分:0)
为多个变量生成单独图形的一种简单方法是将数据集从宽到长整形(即将所有变量放在一列中),然后在图形命令之前使用split file
。示例如下。
set seed = 10.
input program.
loop #i = 1 to 1000.
compute V1 = RV.NORM(0,1).
compute V2 = RV.NORM(20,5).
compute V3 = RV.NORM(100,15).
end case.
end loop.
end file.
end input program.
dataset name sim.
execute.
varstocases
/make V from V1 to V3
/index groups.
sort cases by groups.
split file by groups.
* Chart Builder.
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=V MISSING=LISTWISE
REPORTMISSING=NO
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: V=col(source(s), name("V"))
GUIDE: axis(dim(1), label("V"))
GUIDE: axis(dim(2), label("Frequency"))
ELEMENT: interval(position(summary.count(bin.rect(V))), shape.interior(
shape.square))
END GPL.
split file off.
我现在使用的是旧版本,没有viztemplates(所以如果这对他们不起作用,请告诉我)。虽然您可以使用Viztemplates(地图除外)在内联GPL语句中生成任何图形。
如果您希望通过循环更好地控制特定标签或图表的美感,则需要使用宏工具或python,但这是实现您想要的快速方法。