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

Filter 基于响应完成的案例过滤,filter,spss,missing-data,Filter,Spss,Missing Data,我目前正在尝试清理一个相当大的数据集,但是,我注意到有相当多的参与者没有完成调查,或者甚至没有回答第一个问题。然而,他们的数据包含在我的数据集中 问题:有没有一种方法可以根据回答完成情况筛选出参与者?例如,我想筛选出所有未能对至少30%的总问题作出答复的案例。是 首先,您需要创建一个新变量,用于统计数据中缺少的观测值的数量: COUNT countmiss = v1 v2 v3 v4 v5 v6 (MISSING). 然后,您将要筛选出错过指定数量响应的参与者。在这里,我将筛选出错过两个响应

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

问题:有没有一种方法可以根据回答完成情况筛选出参与者?例如,我想筛选出所有未能对至少30%的总问题作出答复的案例。

首先,您需要创建一个新变量,用于统计数据中缺少的观测值的数量:

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.

请注意,第二步可以通过Data->Select Cases菜单实现。

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

但是,请确保在选择后使用新名称保存文件并将其用作工作文件。通过这种方式,您可以随时返回原始数据,并在需要时通过修改再次运行语法

@eli-k在考虑字符串变量时提出了一个重要的观点

如果您有一个包含大量变量的数据集,并且您希望自己键入一长串变量名,那么您可以借助必须安装的Python插件动态生成一个数值变量列表和一个字符串变量列表

下面的代码创建了两个宏!数字变量和!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.
我从的示例中获取了大部分代码

在COUNT命令中,您只需键入宏名称,而不是整个变量列表

COUNT countmiss = !numericvars (MISSING)
                  !stringvars ("").
然后您可以使用@eli-k建议的SELECT IF命令

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

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

在COUNT命令中:不是键入完整的变量列表v1 v2。。。你也可以把v1写到vn。这很好,@mirirai。但是,只有当变量在数据文件中按顺序列出时,这才有效。这更有意义,但是,当我尝试在syntanx上运行脚本时,脚本不起作用。有什么我需要下载的吗?你有安装Python软件包插件吗?它是自SPSS 22以来标准安装例程的一部分。对于旧版本的SPSS,我想您必须单独安装它。您是否收到任何错误消息?如果是,它说什么?
COMPUTE filter_$ = (countmiss<20).
FILTER BY filter_$.