logo

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

La procédure suivante

proc transpose data=infic
             prefix=cnt
                out=outfic;
   var nocnt;
   by client; 
run ;

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) ;
       traitement sur transpose(i)
    END ;
 */
RUN ;