2016-02-27 93 views
3

我正在嘗試清理一個相當大的數據集,但是,我注意到大量參與者未能完成調查,或者甚至沒有對第一個問題做出響應。儘管如此,他們的數據包含在我的數據集中。基於響應完成的SPSS篩選案例

問題:有沒有一種方法可以根據響應完成過濾參與者?例如,我想過濾掉所有未能提供答案的案例,至少有30%的問題。

在此先感謝!

回答

4

是。

首先,你要創建一個統計遺漏觀測數據的數量的新變量:

COUNT 
countmiss = v1 v2 v3 v4 v5 v6 (MISSING). 

然後,你要過濾掉誰錯過響應的指定數量的參與者(在這裏,我要篩選出誰錯過了兩個響應人):

USE ALL. 
COMPUTE filter_$=(countmiss >= 2). 
VARIABLE LABEL filter_$ countmiss >= 2 (FILTER)'. 
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'. 
FORMAT filter_$ (f1.0). 
FILTER BY filter_$. 
EXECUTE. 

注意,第二步可以通過數據來實現 - >選擇個案菜單。

+1

在COUNT命令中:不是輸入一個完整的變量列表('v1 v2 ... vn'),你也可以寫'v1 TO vn'。 – mirirai

+0

好點,@mirirai。但是,只有當變量在數據文件中按順序列出時纔有效。 – maxwelldeux

2

@maxwelldeux是正確的使用COUNT,但你需要計數兩個缺失的數值變量和空的文本變量(文本變量不一定定義爲缺少時,它是空的)。所以:

COUNT countmiss = numvar1 numvar2 numvar3 numvar4 numvar5 (MISSING) 
        textVar1 textVar2 textVar3 textVar4 textVar5 (""). 

此時,您可以過濾文件@maxwelldeux建議,如果你想保持空(或幾乎空)行的文件中,只是沒有將其包含在分析中。 如果你已經你不打算在文件中包括確保參與者,您可以使用:

SELECT IF countmiss < 20./* pick your best suited limit instead of "20". 

確認,不過,選擇後,將文件保存用新名稱,並使用它作爲一個工作文件。通過這種方式,您可以隨時返回原始數據,並根據需要再次運行語法修改。

2

@ eli-k提出了一個重要的觀點,如果你想考慮字符串變量。

如果您的數據集中包含很多變量,並且想要保存自己的輸入以便輸入一長串變量名稱,則可以在Python插件的幫助下動態生成一個數值變量列表和一個字符串變量必須安裝)。

以下代碼創建兩個宏「!numericvars」和「!stringvars」。被調用時,它們將被擴展到相應的變量列表。

BEGIN PROGRAM. 
import spss 

#create separate strings of numeric and string variables 
numericvars='' 
stringvars='' 
varcount=spss.GetVariableCount() 
for i in xrange(varcount): 
    if spss.GetVariableType(i) > 0: 
    stringvars=stringvars + " " + spss.GetVariableName(i) 
    else: 
    numericvars=numericvars + " " + spss.GetVariableName(i) 

# define macro variables for the numeric and the string variable lists 
spss.SetMacroValue("!numericvars", numericvars) 
spss.SetMacroValue("!stringvars", stringvars) 
END PROGRAM. 

(我已經採取了大部分代碼從spss.SetMacroValue syntax reference page的例子)

COUNT命令,那麼你只需要輸入宏名而不是整個變量列表。

COUNT countmiss = !numericvars (MISSING) 
        !stringvars (""). 

然後你就可以使用SELECT IF命令的提議@禮-K。

SELECT IF countmiss < 20./* pick your best suited limit instead of "20". 

這將從您的數據集中永久刪除20個或更多缺少答案的所有病例。

或者提議@maxwelldeux可以使用FILTER BY命令:

COMPUTE filter_$ = (countmiss<20). 
FILTER BY filter_$. 

在從20分或更多失蹤的答案受訪這種情況下,數據將不會在節目程序使用,只要過濾器處於活動狀態,而數據仍保留在數據集中。

+0

這使得更多的意義,但是,當我試圖在syntanx上運行腳本時,腳本不工作。有什麼我需要下載? – Olivier

+0

您是否安裝了Python Essentials插件?它是自SPSS 22以來的標準安裝例程的一部分。對於較舊版本的SPSS,您必須單獨安裝它。你有沒有收到任何錯誤信息?如果是這樣,它說什麼? – mirirai