概述 (FILTER 命令)

FILTER 用于从程序过程中排除观测值,而不从活动数据集中删除这些观测值。 当 FILTER 生效时,在程序过程中不使用具有指定变量的零值或缺失值的个案。 实际上不会删除这些案例,如果关闭了过滤器,那么这些案例将再次可用。 要查看当前过滤器状态,请使用 SHOW 命令。

基本规范

基本规范是关键字 BY 后跟变量名。 将从后续过程中排除具有过滤器变量的零值或缺失值的个案。

语法规则

  • 只能指定一个数字变量。 该变量可以是数据文件中的一个原始变量,也可以是使用变换命令计算的变量。
  • 关键字 OFF 关闭过滤器。 活动数据集中的所有个案都可供后续过程使用。
  • 如果指定了不带关键字的 FILTER ,那么将假定为 FILTER OFF ,但程序将显示一条警告消息。
  • 可以在命令序列中的任何位置指定 FILTER 。 与 SELECT IF不同, FILTER 在输入程序中的作用与在输入程序外部的作用相同。 必须注意用于计算过滤器变量值的任何变换命令的位置 (请参阅 INPUT PROGRAM)。

操作

  • FILTER 在不更改活动数据集的情况下执行个案选择。 具有零值或缺失值的案例将从后续过程中排除,但不会从文件中删除。
  • 系统缺失值和用户缺失值都被视为缺失值。 FILTER 命令不提供用于更改选择条件的选项。 要设置不同的排除条件,请创建数字变量并有条件地计算其值,然后在 FILTER上指定该变量。
  • 如果在 TEMPORARY之后指定了 FILTER ,那么 FILTER 仅影响下一个过程。 在该过程之后,过滤器状态将还原为 TEMPORARY 命令之前的任何状态。
  • 直到指定了另一个 FILTER 命令,指定了 USE 命令或替换了活动数据集之后,过滤器状态才会更改。
  • FILTERUSE 互斥。 USE 自动关闭任何先前的 FILTER 命令, FILTER 自动关闭任何先前的 USE 命令。
  • 如果重命名指定的过滤器变量,那么该变量仍有效。 SHOW 命令将显示过滤器变量的新名称。 但是,如果将过滤器变量重新编码为字符串变量或从文件中删除,那么将关闭该过滤器。
  • 如果在 MATCH FILESADD FILESUPDATE 命令之后替换了活动数据集,并且活动数据集是其中一个输入文件,那么如果新的活动数据集具有具有过滤器变量名称的数字变量,那么过滤器将保持有效。 如果活动数据集没有具有该名称的数字变量 (例如,如果删除或重命名了过滤器变量) ,那么将关闭过滤器。
  • 如果将活动数据集替换为全新的数据文件 (例如,通过 DATA LISTGETIMPORT 命令) ,那么将关闭过滤器。
  • FILTER 命令会更改过滤器状态,并在执行过程或迂到 EXECUTE 命令时生效。