logo

Macro : Renommer l’ensemble des variables d’une table SAS

Comment faire pour renommer l’ensemble des variables d’une table SAS, surtout quand il y en a plus d’une centaine ?

 

Si vos variables ont des noms organisés en séquences, vous pouvez les renommer d’un seul coup avec cette écriture :

DATA maTable ;
    SET maTable (RENAME = (v3-v15 = x20-x32)) ;
 RUN ;

Les variables s’appellent à l’origine v3, v4, v5, …, v15 et après renommage, x20, x21, …, x32.

Sinon, vous pouvez construire une table SAS avec les anciens et les nouveaux noms (éventuellement à partir d’une feuille Excel importée). L’exemple ci-dessous vous montre comment on peut ensuite générer automatiquement la litanie de RENAME.

DATA work.nouveaux_noms ;
    INPUT ancien $ nouveau $ ;
DATALINES ;
name nom
sex sexe
weight poids
height taille
;
 RUN ;
 %LET table = sashelp.class ;
 /* NE PLUS RIEN MODIFIER APRES CETTE LIGNE */
 DATA _NULL_ ;
    SET work.nouveaux_noms END = fin ;
    IF _N_=1 THEN DO ;
       CALL EXECUTE ("DATA work.nouvelle_table ;") ;
       CALL EXECUTE ("SET &table (RENAME=(") ;
    END ;
    CALL EXECUTE (ancien!!"="!!nouveau) ;
    IF fin THEN DO ;
       CALL EXECUTE (")) ;") ;
       CALL EXECUTE ("RUN ;") ;
    END ;
 RUN ;