IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débutez Discussion :

Renommer toutes les variables d'une table


Sujet :

Débutez

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Renommer toutes les variables d'une table
    Bonjour à tous,

    tout d'abord merci pour votre aide, ca permet vraiment d'avancer plus vite.

    J'ai une série de table que je veux agréger mais elles ont toutes les mêmes noms de variables. J'aimerais donc renommer toutes les variables de celles-ci (sans forcément connaitre leurs noms à priori) avant de faire un left join.

    Par exemple j'ai une table TAB1 et une table TAB2 contenant toutes les 2 les variables a et b.
    Je voudrais renommer les variables a et b de TAB1 en a1 et b1 et les variables a et b de TAB2 en a2 et b2.

    Je voudrais donc faire une fonction qui parcourt les noms des variables d'une table et les renomme en ajoutant un numéro !

    Merci

    Sebastien

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
     
     
     
    DATA test;
    SET sashelp.class;
    run;
     
    %macro rename;
     
    proc sql noprint;
       SELECT name, '_'!!name ,max (monotonic()) INTO: old_var separated BY ',',: new_var separated BY ','  ,: nbr 
       FROM dictionary.COLUMNS WHERE upcase(libname)='WORK' AND upcase(memname)='TEST' ;
    quit;
     
     
    proc sql; 
    create table verif as select a.*, b.* from sashelp.class  as a 
    inner join test (  RENAME=( %do i=1 %TO &nbr. ; %scan("&old_var",&i,",")=%scan("&new_var",&i,",") %end; )  ) as b
    on a.name=b._name
    ;
    quit; 
     
     
    %mend;
     
    %rename;
    ici je rajoute un UNDERSCORE (_) au début de chaque variable de la table TEST.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Merci SAM !

    J'ai utilisé cette macro (que j'ai trouvé ici - malheureusement après avoir posté ce message...):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    %macro renamevar(mvtabin=sashelp.class,mvtabout=work.class,mvsuffixe=vis1) ;
       proc contents DATA=&mvtabin out=work.tempo noprint ;
       run ;
       DATA _null_;
          SET work.tempo ;
          call symput('mvvar'||compress(_n_),compress(name)) ;
          call symput('mvmax',compress(_n_)) ;
       run;
       DATA &mvtabout ;
          SET &mvtabin
             (RENAME= (
                %do i=1 %TO &mvmax ;
                    &&mvvar&i = &&mvvar&i%sysfunc(LEFT(&mvsuffixe))
                %end; )
                ) ;
       run ;
    /* Test : %renamevar() ; */
    %mend renamevar ;
    Le Post se trouve ici: http://www.developpez.net/forums/d75...mmer-variable/

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Oui c'est correct.
    sauf ,ce que je te propose te permet de renommer les varaibles dans la même proc sql sans créer une table ( étape) intermidiaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    J'ai utilisé cette macro (que j'ai trouvé ici - malheureusement après avoir posté ce message...):
    Comme quoi il faut utiliser la fonction recherche avant de poster sa problèmatique.

    Bon courage.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. renommer toutes les colonnes d'une table
    Par shrd92 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 11/02/2011, 09h37
  2. Réponses: 6
    Dernier message: 01/08/2006, 18h12
  3. Utilisation de Tout les champs d'une table
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/07/2006, 20h55
  4. Réponses: 7
    Dernier message: 30/05/2006, 11h00
  5. Réponses: 4
    Dernier message: 11/10/2005, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo