2017-03-04 240 views
1

我剛剛學習SPSS,我想根據我創建的變量「狀態」進行簡單的子組分析,該變量可以取值爲0到8.我希望將輸出打印在一個走。基於變量的SPSS for循環

這是我想要做的僞代碼:

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

這可能是一個很好的做法,上面的建議可能更明智。

你可以初始化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。

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 . 
+0

謝謝我試圖通過這個工作......你可以在SPSS中的原型功能,你可以在Python或C中做到這一點? – Tikhon