Ya que no es lo mismo metro de encaje negro, que un metro de encaje blanco; tampoco es lo mismo el valor CERO y NULO. NULO no es un valor, por lo que no puede ser operado matemáticamente. No me pidan explicar la macro por que yo tampoco le entiendo, lo que si puedo asegurarles es que funciona.

 

Macro:

%macro haceceros;
    drop _i_;
    array _c_(*) _numeric_;
    do _i_=1 to dim(_c_);
        if _c_(_i_)=. then _c_(_i_)=0;
    end;
%mend;

 

Ejemplo:

 

DATA < DataSinValoresNulos > ;
    SET < DataConValoresNulos > ;
    %haceceros ;
RUN;

 

Resultado:

El data destino < DataSinValoresNulos > ya no contiene ningún dato igual a . (nulo). Todos los nulos fueron reemplazados 0 (cero) con la implementación de la macro. Y es que en las ocasiones donde intervienen operaciones como la suma, la resta o la multiplicación y valores nulos, el resultado siempre se vuelve nulo. Gracias a Hfcm349 por su contribución.


¿Que te parecio el contenido?