Domanda

C'è un comando o di un modo rapido per impostare tutte le variabili esistenti nel PDV a manca?

Ho qualche codice che viene eseguito in questo modo:

Data example2; 
var1='A';
Var2='B';
Var3='C';
/* etc*/
output;
Var1='B';
output;
stop;
run;

Una volta che la prima dichiarazione 'uscita' viene raggiunta vorrei ripristinare tutte le variabili PDV a mancare (per esempio var2 = ''; VAR3 = '';), ma senza doverli dichiarare manualmente come tali. Chiunque può aiutare?

È stato utile?

Soluzione

La scomparsa di routine chiamata e l'_all_ lista variabile automatica potranno farlo facilmente

call missing(of _all_);

Ad esempio

Data example2;
var1='A';
Var2='B';
Var3='C';
output;
call missing(of _all_);
Var1='B';
output;
stop;
run;

proc print data=example2;
run;

produce

                                 The SAS System

                               Obs    var1    Var2    Var3

                                1      A       B       C
                                2      B

Altri suggerimenti

Si può fare con gli array.

Ecco una macro che fa tutto nel mancante PDV. Il parametro t è per consentire di chiamare più volte da un unico passaggio dei dati.


%macro cleanpdv(t);
array __c&t{*} _character_;
array __n&t{*} _numeric_;
do __i&t=1 to dim(__c&t);
  call missing(__c&t{__i&t});
end;
do __i&t=1 to dim(__n&t);
  call missing(__n&t{__i&t});
end;
drop __i&t;
%mend;

Si potrebbe usare in questo modo:



Data example2;
var1='A';
Var2='B';
Var3='C';
/* etc*/
output;
%cleanpdv(1);
Var1='B';
output;
%cleanpdv(2);
output;
stop;
run;

che produce il seguente set di dati:

  Obs    var1    Var2    Var3

   1      A       B       C
   2      B
   3
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top