logo

SAS/BASE : nombre de variables généré par une proc TRANSPOSE

La procédure suivante

<strong>proc transpose data=infic</strong>
<strong>             prefix=cnt</strong>
<strong>                out=outfic;</strong>
<strong>   var nocnt;</strong>
<strong>   by client; </strong>
<strong>run ;</strong>

va générer cnt1 à cntn. Comment récupérer le nombre de variables générées (n) dans une étape data ?

Merci.

 

Pour mettre ce nombre dans une macro-variable, voici un premier programme :

DATA _NULL_ ;
    SET outfic ;
    ARRAY transpose cnt: ;
    CALL SYMPUT ("nbNllesVar", DIM(transpose)) ;
    STOP ;
 RUN ;

Vous récupérez le nombre de variables créées par la procédure TRANSPOSE dans la macro-variable &nbNllesVar.
Pour disposer de ce nombre sous forme de variable dans l’étape Data, il suffit de modifier légèrement ce programme :

DATA ... ;
    SET outfic ;
    ARRAY transpose cnt: ;
    nbVar = DIM(transpose) ;
 /* il est également possible d'opérer des traitements avec une boucle sur l'Array : 
    DO i = 1 TO DIM(transpose) ;
       <i>traitement sur transpose(i)</i>
    END ;
 */
RUN ;