Visión general (mandato FILTER)

FILTER se utiliza para excluir casos de procedimientos de programa sin suprimirlos del conjunto de datos activo. Cuando FILTER está en vigor, los casos con un valor cero o perdido para la variable especificada no se utilizan en los procedimientos del programa. Estos casos no se suprimen realmente y están disponibles de nuevo si el filtro está desactivado. Para ver el estado actual del filtro, utilice el mandato SHOW .

Especificación básica

La especificación básica es la palabra clave BY seguida de un nombre de variable. Los casos que tienen un valor cero o perdido para la variable de filtro se excluyen de los procedimientos posteriores.

Reglas de la sintaxis

  • Sólo se puede especificar una variable numérica. La variable puede ser una de las variables originales del archivo de datos o una variable calculada con mandatos de transformación.
  • La palabra clave OFF desactiva el filtro. Todos los casos del conjunto de datos activo pasan a estar disponibles para los procedimientos posteriores.
  • Si se especifica FILTER sin una palabra clave, se asume FILTER OFF pero el programa muestra un mensaje de aviso.
  • FILTER se puede especificar en cualquier lugar de la secuencia de mandatos. A diferencia de SELECT IF, FILTER tiene el mismo efecto dentro de un programa de entrada que fuera de un programa de entrada. Debe prestarse atención a la colocación de cualquier mandato de transformación utilizado para calcular los valores de la variable de filtro (consulte INPUT PROGRAM).

Operaciones

  • FILTER realiza la selección de mayúsculas y minúsculas sin cambiar el conjunto de datos activo. Los casos que tienen un valor cero o perdido se excluyen de los procedimientos posteriores, pero no se suprimen del archivo.
  • Los valores perdidos del sistema y perdidos del usuario se tratan como perdidos. El mandato FILTER no ofrece opciones para cambiar los criterios de selección. Para configurar distintos criterios para la exclusión, cree una variable numérica y calcule condicionalmente sus valores antes de especificarla en FILTER.
  • Si se especifica FILTER después de TEMPORARY, FILTER sólo afecta al siguiente procedimiento. Después de ese procedimiento, el estado del filtro vuelve a ser el que era antes del mandato TEMPORARY .
  • El estado del filtro no cambia hasta que se especifica otro mandato FILTER , se especifica un mandato USE o se sustituye el conjunto de datos activo.
  • FILTER y USE son mutuamente excluyentes. USE desactiva automáticamente cualquier mandato FILTER anterior y FILTER desactiva automáticamente cualquier mandato USE anterior.
  • Si se cambia el nombre de la variable de filtro especificada, seguirá en vigor. El mandato SHOW mostrará el nuevo nombre de la variable de filtro. Sin embargo, el filtro se desactiva si la variable de filtro se recodifica en una variable de serie o se suprime del archivo.
  • Si el conjunto de datos activo se sustituye después de un mandato MATCH FILES, ADD FILESo UPDATE y el conjunto de datos activo es uno de los archivos de entrada, el filtro permanece en vigor si el nuevo conjunto de datos activo tiene una variable numérica con el nombre de la variable de filtro. Si el conjunto de datos activo no tiene una variable numérica con ese nombre (por ejemplo, si la variable de filtro se ha descartado o renombrado), el filtro se desactiva.
  • Si el conjunto de datos activo se sustituye por un archivo de datos completamente nuevo (por ejemplo, mediante un mandato DATA LIST, GETo IMPORT ), el filtro se desactiva.
  • El mandato FILTER cambia el estado del filtro y entra en vigor cuando se ejecuta un procedimiento o se encuentra un mandato EXECUTE .