La macro `AHGsetallvarnil` está diseñada para ser llamada dentro de un DATA STEP. Identifica todas las variables de caracteres y numéricas disponibles en el paso de datos actual utilizando las matrices implícitas `_character_` y `_numeric_`. Para cada variable, verifica si su nombre coincide con la lista de excepciones proporcionada a través del parámetro `except`. Si el nombre de la variable NO está en la lista de excepciones (la verificación se realiza mediante la macro `%AHGequaltext`), la variable se establece en faltante (cadena vacía para caracteres, punto para numéricas). Es importante señalar un error potencial en el código proporcionado: al procesar variables numéricas, la condición `if not %AHGequaltext(vname(ahuigeallchar),&except)` utiliza `vname(ahuigeallchar)` en lugar de `vname(ahuigeallnum)`. Esto significa que la exclusión de variables numéricas se basará en el nombre de las variables de caracteres, lo que podría impedir la exclusión correcta de las variables numéricas deseadas.
Análisis de datos
Type : CREATION_INTERNE
La macro opera sobre las variables existentes en el paso de datos donde se invoca, inicializándolas a valores faltantes según su tipo. No invoca directamente fuentes de datos externas o SASHELP.
1 Bloque de código
MACRO DEFINITION
Explicación : Este bloque define la macro `AHGsetallvarnil` con un parámetro `except` opcional. Declara dos matrices implícitas: `ahuigeallchar` para todas las variables de caracteres y `ahuigeallnum` para todas las variables numéricas. Se utilizan dos bucles `DO OVER` para iterar sobre estas matrices. Para las variables de caracteres, si el nombre de la variable (obtenido por `vname`) no está en la lista `except` (verificado por `%AHGequaltext`), la variable se define como una cadena vacía `''`. Para las variables numéricas, si el nombre de una variable de caracteres (error potencial aquí, ya que se usa `vname(ahuigeallchar)` en lugar de `vname(ahuigeallnum)`) no está en la lista `except`, la variable numérica se define al valor faltante `.`.
¡Copiado!
%macro AHGsetallvarnil(except=);
do;
array ahuigeallchar _character_;
array ahuigeallnum _numeric_ ;
do over ahuigeallchar ;
if not %AHGequaltext(vname(ahuigeallchar),&except) then ahuigeallchar='';
end;
do over ahuigeallnum ;
if not %AHGequaltext(vname(ahuigeallchar),&except) then ahuigeallnum=.;
end;
do;
%mend;
1
%macro AHGsetallvarnil(except=);
2
DO;
3
array ahuigeallchar _character_;
4
array ahuigeallnum _numeric_ ;
5
DO over ahuigeallchar ;
6
IF not %AHGequaltext(vname(ahuigeallchar),&except) THEN ahuigeallchar='';
7
END;
8
DO over ahuigeallnum ;
9
IF not %AHGequaltext(vname(ahuigeallchar),&except) THEN ahuigeallnum=.;
10
END;
11
DO;
12
%mend;
13
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.