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

Macro Discussion :

Changer les noms de variables > Référentiel


Sujet :

Macro

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Août 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Août 2018
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Changer les noms de variables > Référentiel
    Bonjour,

    Voici ma problématique :

    J'ai une table SAS avec ces informations :

    MARCHE INDICATEUR 4 SEMAINES JUSQU'AU 14/08/16 4 SEMAINES JUSQU'AU 11/09/16 4 SEMAINES JUSQU'AU 09/10/16 4 SEMAINES JUSQU'AU 06/11/16
    PIZZA VOLUME 15 20 25 30
    SALADE VOLUME 30 22 11 15
    LEGUME VOLUME 120 210 51 75


    Je voudrais changer les noms des colonnes 4 SEMAINES JUSQU'AU 14/08/16 en P1_2016, pour ce faire, j'ai une table de correspondance :

    VALINI VALOUT
    4 SEMAINES JUSQU'AU 14/08/16 P1_2016
    4 SEMAINES JUSQU'AU 11/09/16 P2_2016
    4 SEMAINES JUSQU'AU 09/10/16 P3_2016
    4 SEMAINES JUSQU'AU 06/11/16 P4_2016

    Dans la vraie vie, j'ai beaucoup plus de variables, comment je peux faire pour passer de '4 semaines... ' à 'P1_' ??

    Merci par avance pour votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Analyste - Information médicale
    Inscrit en
    Mars 2012
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste - Information médicale
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 72
    Points : 255
    Points
    255
    Par défaut
    Bonjour,

    Je te donne une méthode à partir de la table sashelp.class :
    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
     
    * Je crée une table avec mes noms de variables à changer;
    data noms;
    valini='age'; valout='age_nomme'; output;
    valini='sex'; valout='sex_nomme'; output;
    run;
     
    * Je mes mes noms avant (in) et mes noms après (out) en macro-variable : de 1 à nb variables sont créées en entrée et en sortie; 
    data _null_;
    set noms;
    call symputx('nb',_n_);
    call symputx(compress('in'!!_n_),valini);
    call symputx(compress('out'!!_n_),valout);
    run;
     
    * Pour voir les macros variables créées;
    %put _user_;
     
    * Je renomme par une boucle mes variables de 1 à nb;
    %macro renomme();
    data x;
    set sashelp.class;
    %do i=1 %to &nb.;
    rename &&in&i..=&&out&i..;
    %end;
    run;
    %mend renomme;
    %renomme();
    A adapter à ton programme.
    Il existe surement aussi une méthode avec des vecteurs mais j'ai un peu oublié comment les utiliser.
    Bon courage !

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Citation Envoyé par Donch Voir le message
    Bonjour,

    Voici ma problématique :

    J'ai une table SAS avec ces informations :..............
    Bonjour,
    les noms des colonnes commençant par "4 SEMAINES JUSQU'AU 14/08/16 " ne respectent pas les règles définies par SAS. La question qui se pose comment tu as pu lire la table et par quel moyen ? La réponse à cette question nous permet d'envisager une solution adéquate à ta problématique.

    Cordialement Ward

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Août 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Août 2018
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par hossward Voir le message
    Bonjour,
    les noms des colonnes commençant par "4 SEMAINES JUSQU'AU 14/08/16 " ne respectent pas les règles définies par SAS. La question qui se pose comment tu as pu lire la table et par quel moyen ? La réponse à cette question nous permet d'envisager une solution adéquate à ta problématique.

    Cordialement Ward
    Bonjour,

    C'est un import Excel. C'est justement ce pourquoi je veux réussir à modifier les noms des variables sans passer par une transformation du fichier xlsx source.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Août 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Août 2018
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Fabien G. Voir le message
    Bonjour,

    Je te donne une méthode à partir de la table sashelp.class :
    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
     
    * Je crée une table avec mes noms de variables à changer;
    data noms;
    valini='age'; valout='age_nomme'; output;
    valini='sex'; valout='sex_nomme'; output;
    run;
     
    * Je mes mes noms avant (in) et mes noms après (out) en macro-variable : de 1 à nb variables sont créées en entrée et en sortie; 
    data _null_;
    set noms;
    call symputx('nb',_n_);
    call symputx(compress('in'!!_n_),valini);
    call symputx(compress('out'!!_n_),valout);
    run;
     
    * Pour voir les macros variables créées;
    %put _user_;
     
    * Je renomme par une boucle mes variables de 1 à nb;
    %macro renomme();
    data x;
    set sashelp.class;
    %do i=1 %to &nb.;
    rename &&in&i..=&&out&i..;
    %end;
    run;
    %mend renomme;
    %renomme();
    A adapter à ton programme.
    Il existe surement aussi une méthode avec des vecteurs mais j'ai un peu oublié comment les utiliser.
    Bon courage !
    ça marche parfaitement ! je te remercie !!

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

Discussions similaires

  1. Changer tous les noms des variables
    Par Imfafa dans le forum SAS Base
    Réponses: 8
    Dernier message: 09/05/2011, 12h10
  2. changer les noms de champs sous access
    Par Flo42 dans le forum Access
    Réponses: 4
    Dernier message: 11/04/2006, 11h29
  3. Comment connaitre les noms de variables
    Par gwendy dans le forum Langage
    Réponses: 2
    Dernier message: 28/02/2006, 11h51
  4. [XSLT] Changer les noms de balise lors de la fusion
    Par toxine dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 25/01/2006, 09h47
  5. Changer les noms de colonnes dans un formulaire
    Par cakeby dans le forum Access
    Réponses: 1
    Dernier message: 06/01/2006, 21h32

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