我有一個包含大量變量的sav文件。我現在想要做的是使用SPSS語法創建宏/例程來檢測一系列項目集的基本屬性。在SPSS中獲取矢量的長度
COMPUTE scale_vars_01 = v_28 TO v_240.
上面的代碼旨在定義我希望進一步詳細觀察的一系列項目。我如何獲得「數組」scale_vars_01中元素的數量,作爲整數?
感謝您的信息。 (如您所見,SPSS語法對我來說仍然很奇怪,我正在考慮使用Python來代替,但這對於我相對簡單的目的可能會造成太大的開銷)。
我有一個包含大量變量的sav文件。我現在想要做的是使用SPSS語法創建宏/例程來檢測一系列項目集的基本屬性。在SPSS中獲取矢量的長度
COMPUTE scale_vars_01 = v_28 TO v_240.
上面的代碼旨在定義我希望進一步詳細觀察的一系列項目。我如何獲得「數組」scale_vars_01中元素的數量,作爲整數?
感謝您的信息。 (如您所見,SPSS語法對我來說仍然很奇怪,我正在考慮使用Python來代替,但這對於我相對簡單的目的可能會造成太大的開銷)。
的一種方法是使用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.
統計信息有一個內置的宏功能,可以用來定義變量集,但是Python apis提供了更強大的訪問和使用元數據的方式。還有一個擴展命令SPSSINC SELECT VARIABLES可以根據變量元數據定義宏,例如名稱,測量級別,類型和其他屬性中的模式。它生成一個列出這些變量的宏,然後可以在標準語法中使用這些變量。