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 :

Création d'une variable dans une table contenant la valeur d'une macro-variables


Sujet :

Macro

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 147
    Points : 58
    Points
    58
    Par défaut Création d'une variable dans une table contenant la valeur d'une macro-variables
    Bonjour à tous,

    Dans le cadre d'un de mes projets, j'ai besoin de récupérer dans une macro-variable, la valeur d'une variable contenue dans une table SAS (ici "titres")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    data test;
    input dl $ titres $ recence @@;  
    cards;
    1 100 3
    1 101 4
    1 102 1
    2 100 9
    2 110 3
    2 105 7
    ;
    run;
    Dans la table ci-dessus, pour chaque dl, je souhaite récupérer un par un chaque valeur de titres.
    Pour cela j'utilise un data :

    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
     
    proc sort data=test;
    by dl titres;
    run;
     
    data test;
    set test;
    by dl titres;
    if first.dl then do; /*pour le premier dl*/
    	if first.titres then do; /*pour le premier titre*/
    		call symput("titre",titres); /*récupération de la valeur du titre*/
    		%put titres : &titre;
    		top_ha_&titre=rec; /*création d'une variable dans la table*/
    	end;
    end;
    run;
    Quand ma valeur est récupérée grâce au Symput, je souhaite créer une variable commençant par "top_ha_" suivi de la valeur récupérée avec le symput.
    J'espère être compréhensible! :p

    Pour essayer d'être claire obtenir pour la première ligne la table suivante :
    dl titres rec top_ha_100
    1 100 3 3

    N'hésitez pas si vous avez des questions.
    Merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 56
    Points : 72
    Points
    72
    Par défaut
    Bonjour,

    Voici une solution mais en plusieurs étapes, en espérant que cela réponde bien à ton besoin!

    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
    29
    30
    31
    32
    33
    34
    35
    36
     
    DATA test;
    input dl $ titres $ recence @@;  
    cards;
    1 100 3
    1 101 4
    1 102 1
    2 100 9
    2 110 3
    2 105 7
    ;
    run;
     
    proc sort DATA=test out=t nodupkeys;
    BY dl titres;
    run;
     
    data _null_;
      set t;
      call symput(compress("Titre_" !! _N_), compress(titres));
      call symput("NB", _N_);
    run;
     
    %macro abs();
     
    DATA test1;
    SET test;
      %do i = 1 %to &nb;
        if titres = "&&titre_&i" then do;
          top_ha&&titre_&i = recence;
        end;
      %end;
    run;
     
    %mend abs;
    %abs();

Discussions similaires

  1. [EG] Macro variable dans le nom d'une table
    Par asirier dans le forum Outils BI
    Réponses: 2
    Dernier message: 02/07/2013, 15h44
  2. Valeurs d'une macro-variable dans une table SAS
    Par patril dans le forum Macro
    Réponses: 2
    Dernier message: 03/08/2011, 13h23
  3. [AC-2007] Fixer une variable dans plusieurs tables a l'ouverture
    Par theuma dans le forum Access
    Réponses: 2
    Dernier message: 27/04/2011, 15h53
  4. Créations de table selon les valeurs d'une variable
    Par rocsylcanar dans le forum SAS Base
    Réponses: 9
    Dernier message: 27/05/2009, 12h22
  5. Réponses: 5
    Dernier message: 04/04/2007, 16h11

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