我正在学习SPSS,我想根据变量" status"进行简单的子组分析。我创建了可以从0到8的值。我想一次打印输出。
这是我想要做的伪代码:
for( i = 1, i = 8, i++)
{
filter by (ststus = i)
display analysis
remove filter
}
这样我可以一次性完成所有操作,但我也可以添加到分析代码中,并为8个子组轻松做一些事情。
我不知道它是否相关,但这里是我想要迭代的代码:
USE ALL.
COMPUTE filter_$=(Workforce EQ 1 AND SurveySample = 1 AND State = 1).
VARIABLE LABELS filter_$ 'Workforce EQ 1 (FILTER)'.
> VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'. FORMATS filter_$
> (f1.0). FILTER BY filter_$. EXECUTE.
>
>
> FREQUENCIES VARIABLES = Q86 Q33 Q34 Q88 FSEScore /BARCHART FREQ
> /ORDER=ANALYSIS.
>
> CROSSTABS /TABLES=FSEScore BY Q86 /FORMAT=AVALUE TABLES
> /CELLS=ROW /COUNT ROUND CELL.
>
> FILTER OFF. USE ALL.
谢谢你们。
答案 0 :(得分:3)
split file
命令可以解决问题 - 它会使您的分析报告分别显示拆分变量的每个类别的结果:
*run your transformations.
sort cases by status.
split file by status.
FREQUENCIES .....
CROSSTABS ....
split file off.
如果这还不够,您可以使用宏来运行“状态”类别:
首先定义宏:
define MyMacro ()
!do !ST=1 !to 8
* filter commands using **status = !ST**
* transformations using **status = !ST**
FREQUENCIES .....
CROSSTABS ....
!doend
!enddefine.
现在调用你的宏:
MyMacro .
答案 1 :(得分:0)
这可能是一种非常好的做法,上面的建议可能更明智。
你可以初始化Python是spss。以下代码有效:
begin program.
import spss
for i in xrange(1,8):
string = str(i)
spss.Submit("""
USE ALL.
COMPUTE filter_$=(Workforce EQ 1 AND SurveySample = 1 AND Status = %s).
VARIABLE LABELS filter_$ 'Workforce EQ 1 (FILTER)'.
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.
#analysis as required
FREQUENCIES VARIABLES = Q86
/BARCHART FREQ
/ORDER=ANALYSIS.
"""%(' '.join(string)) )
end program.
非常感谢eli-k我可能应该刚刚使用了splitfile。