2016-02-11 62 views
2

我有一個包含大約1000個變量的SPSS文件,我必須刪除具有0個有效值的SPSS文件。我可以用if語句來思考一個循環,但是我找不到如何編寫它。根據SPSS中的觀察數刪除變量

任何幫助,將有助於:)

回答

1

最簡單的方法是使用spssaux2.FindEmptyVars Python函數是這樣的。

開始程序。
進口spssaux2

spssaux2.FindEmptyVars(刪除= TRUE)
端程序。

如果您尚未安裝spssaux2模塊,則需要從SPSS社區網站或IBM Predictive Analytics站點獲取它,並將其保存在Statistics安裝下的python \ lib \ site-packages目錄中。

否則,VALIDATEDATA命令(如果有的話)將識別違反諸如缺失值的最大百分比等規則的變量,但您必須將該輸出變爲DELETE VARIABLES命令。您也可以使用DESCRIPTIVES查找零缺失值的變量,並選擇N = 0的變量。

0

如果你從來沒有在SPSS蟒蛇工作,這裏有一個辦法讓沒有它完成這項工作(而不是優雅,但應該做的工作):

這將算在每個變量有效的情況下, ,並且只選擇那些有0個有效情況的那些。然後,您將手動將這些變量的名稱複製到將刪除它們的語法命令中。

DATASET NAME Orig. 
DATASET DECLARE VARLIST. 
AGGREGATE /OUTFILE='VARLIST'/BREAK= 
/**list_all_the_variable_names_here = NU(*FirstVarName to *LastVarName). 
DATASET ACTIVATE VARLIST. 
VARSTOCASES /MAKE NumValid FROM *FirstVarName to *LastVarName/INDEX=VarName(NumValid). 
SELECT IF NumValid=0. 
EXECUTE. 

暫停此列表中的剩餘名稱複製並完成語法,然後繼續:

DATASET ACTIVATE Orig. 
DELETE VARIABLES *paste_here_all_the_remaining_variable_names_from_varlist . 

注: *我把星星,你必須與你的變量名來代替我的文字。 **如果變量整齊地命名爲Q1,Q2,Q3 .... Q1000,則可以使用「FirstVarName到LastVarName」形式(Q1到Q1000),而不是列出所有變量名稱。

BTW它當然可以不(只使用語法,沒有Python)的手動複製這些名字完全自動地做到這一點,但增加的複雜性是不值得用一個一次性使用的煩心事......