2014-05-23 69 views
1

我有一個包含大量變量的sav文件。我現在想要做的是使用SPSS語法創建宏/例程來檢測一系列項目集的基本屬性。在SPSS中獲取矢量的長度

COMPUTE scale_vars_01 = v_28 TO v_240. 

上面的代碼旨在定義我希望進一步詳細觀察的一系列項目。我如何獲得「數組」scale_vars_01中元素的數量,作爲整數?

感謝您的信息。 (如您所見,SPSS語法對我來說仍然很奇怪,我正在考慮使用Python來代替,但這對於我相對簡單的目的可能會造成太大的開銷)。

回答

1

的一種方法是使用COUNT,如:

COUNT Total = v_28 TO v_240 (LO THRU HI). 

這將計算所有有效值的向量。如果矢量包含混合類型(例如,字符串和數字)或矢量具有缺失值,則這將不起作用。低效率的方式來獲得使用DO REPEAT整個計數低於:

DO IF $casenum = 1. 
COMPUTE Total = 0. 
DO REPEAT V = v_28 TO V240. 
    COMPUTE Total = Total + 1. 
END REPEAT. 
ELSE. 
    COMPUTE Total = LAG(Total). 
END IF. 

這將爲混合型變量的工作,並且將計算與缺失值的字段。 (該DO IF將工作同樣爲COUNT,這迫使數據傳遞,但對於大型數據集,大名單將只評估尚屬首例。)

Python的可能是,雖然做到這一點,最有效的方式 - 和我如果您熟悉它,請參閱沒有理由不使用它。

BEGIN PROGRAM. 
import spss 
beg = 'X1' 
end = 'X10' 

MyVars = [] 
for i in xrange(spss.GetVariableCount()): 
    x = spss.GetVariableName(i) 
    MyVars.append(x) 

len = MyVars.index(end) - MyVars.index(beg) + 1 
print len 
END PROGRAM. 
2

統計信息有一個內置的宏功能,可以用來定義變量集,但是Python apis提供了更強大的訪問和使用元數據的方式。還有一個擴展命令SPSSINC SELECT VARIABLES可以根據變量元數據定義宏,例如名稱,測量級別,類型和其他屬性中的模式。它生成一個列出這些變量的宏,然後可以在標準語法中使用這些變量。