基于响应完成的SPSS过滤案例

时间:2016-02-27 17:27:01

标签: filter spss missing-data

我目前正在尝试清理一个相当大的数据集,但是,我注意到有相当数量的参与者未能完成调查,或者甚至没有回答第一个问题。然而,他们的数据包含在我的数据集中。

问题:有没有办法根据响应完成过滤掉参与者?例如,我想过滤掉所有未能对至少30%的总问题做出回应的案例。

提前致谢!

3 个答案:

答案 0 :(得分:4)

首先,您要创建一个新变量来计算数据中缺失观察的数量:​​

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 :(得分:3)

如果你想考虑字符串变量,

@ 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 ("").

然后你可以使用@ eli-k提出的SELECT IF命令。

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

这将从您的数据集中永久删除所有包含20个或更多遗失答案的案例。

或者您可以使用@maxwelldeux建议的FILTER BY命令:

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

在这种情况下,只要过滤器处于活动状态,来自具有20个或更多缺失答案的受访者的数据将不会用于程序过程,而数据仍保留在数据集中。

答案 2 :(得分:2)

@maxwelldeux关于使用COUNT是正确的,但您需要计算缺少的数字变量和空文本变量(文本变量在空时必须定义为缺失)。所以:

.nice()

此时,您可以将文件过滤为@maxwelldeux建议,如果您想在文件中保留空(或接近空)行,只是不要将它们包含在分析中。 如果您确定哪些参与者不会包含在文件中,您可以使用:

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

但是,确保在SELECTing之后,使用新名称保存文件并将其用作工作文件。这样,如果需要,您可以随时返回原始数据并再次运行语法。