概述 (FILTER 命令)
FILTER 用于从程序过程中排除观测值,而不从活动数据集中删除这些观测值。 当 FILTER 生效时,在程序过程中不使用具有指定变量的零值或缺失值的个案。 实际上不会删除这些案例,如果关闭了过滤器,那么这些案例将再次可用。 要查看当前过滤器状态,请使用 SHOW 命令。
基本规范
基本规范是关键字 BY 后跟变量名。 将从后续过程中排除具有过滤器变量的零值或缺失值的个案。
语法规则
- 只能指定一个数字变量。 该变量可以是数据文件中的一个原始变量,也可以是使用变换命令计算的变量。
- 关键字
OFF关闭过滤器。 活动数据集中的所有个案都可供后续过程使用。 - 如果指定了不带关键字的
FILTER,那么将假定为FILTER OFF,但程序将显示一条警告消息。 - 可以在命令序列中的任何位置指定
FILTER。 与SELECT IF不同,FILTER在输入程序中的作用与在输入程序外部的作用相同。 必须注意用于计算过滤器变量值的任何变换命令的位置 (请参阅INPUT PROGRAM)。
操作
FILTER在不更改活动数据集的情况下执行个案选择。 具有零值或缺失值的案例将从后续过程中排除,但不会从文件中删除。- 系统缺失值和用户缺失值都被视为缺失值。
FILTER命令不提供用于更改选择条件的选项。 要设置不同的排除条件,请创建数字变量并有条件地计算其值,然后在FILTER上指定该变量。 - 如果在
TEMPORARY之后指定了FILTER,那么FILTER仅影响下一个过程。 在该过程之后,过滤器状态将还原为TEMPORARY命令之前的任何状态。 - 直到指定了另一个
FILTER命令,指定了USE命令或替换了活动数据集之后,过滤器状态才会更改。 FILTER和USE互斥。USE自动关闭任何先前的FILTER命令,FILTER自动关闭任何先前的USE命令。- 如果重命名指定的过滤器变量,那么该变量仍有效。
SHOW命令将显示过滤器变量的新名称。 但是,如果将过滤器变量重新编码为字符串变量或从文件中删除,那么将关闭该过滤器。 - 如果在
MATCH FILES,ADD FILES或UPDATE命令之后替换了活动数据集,并且活动数据集是其中一个输入文件,那么如果新的活动数据集具有具有过滤器变量名称的数字变量,那么过滤器将保持有效。 如果活动数据集没有具有该名称的数字变量 (例如,如果删除或重命名了过滤器变量) ,那么将关闭过滤器。 - 如果将活动数据集替换为全新的数据文件 (例如,通过
DATA LIST,GET或IMPORT命令) ,那么将关闭过滤器。 FILTER命令会更改过滤器状态,并在执行过程或迂到EXECUTE命令时生效。