Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Débutez
Débutez Forum concentrant les premières questions que l'on se pose en tant que débutant
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2012, 12h05   #1
Invité régulier
 
Inscription : janvier 2012
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 15
Points : 6
Points : 6
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
Cannaould est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 12h14   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 014
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 1 014
Points : 1 722
Points : 1 722
Code :
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.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 12h22   #3
Invité régulier
 
Inscription : janvier 2012
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 15
Points : 6
Points : 6
Merci SAM !

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

Code :
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/
Cannaould est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 12h27   #4
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 014
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 1 014
Points : 1 722
Points : 1 722
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 :
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.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h53.


 
 
 
 
Partenaires

Hébergement Web