SPSS for循环基于变量

时间:2017-03-04 01:47:29

标签: loops for-loop spss

我正在学习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.

谢谢你们。

2 个答案:

答案 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。