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 :

Stocker les résultats d'une boucle dans une seule variable


Sujet :

Macro

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Stocker les résultats d'une boucle dans une seule variable
    Bonjour la communauté,

    Afin de faire un filtre à l'aide d'un fichier de paramétrage, j'aimerais stocker les résultats de ma boucle %DO dans une seule variable que je pourrais utiliser.

    Par exemple, je vais avoir comme variable dans ma boucle

    • Animaux = Chien
    • Animaux = Chat
    • Animaux = Oiseau
    • Animaux = Souris


    Pour avoir résultat ci-dessous dans une seule variable

    • Liste d'animaux = Chien, Chat, Oiseaux, Souris



    Ci-dessous le code que j'ai essayé de développer.
    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
     
    %macro List_animaux();
     
    data Animaux;
    	input Type_animaux $;
    		cards;
    		Chien
    		Chat
    		Oiseau
    		Souris
    	;
    run;
     
    data _NULL_;
    	call symputx("NB_ANIMAUX",_N_-1);
    	set Animaux;
    	cnt+1;
        call symput (cats("TYPE_ANIMAUX",put(cnt,best.)),Type_animaux);
    	run;
     
     
    %do i=1 %to &NB_ANIMAUX.;
        %let Lst_animaux = 
    		%do i=1 %to &NB_ANIMAUX.; &&TYPE_ANIMAUX&i.,
    		%end;
    	;
    %end;
     
    %put &Lst_animaux.;
     
    %mend;
    %List_animaux;
    Je n'arrive pas à stocker les résultats dans un %let en utilisent une boucle %DO.

    Il y a également une autre difficulté car la dernière valeur de ma boucle ne doit pas avoir pour séparateur de ",".

    Merci pour votre aide.

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 181
    Points
    181
    Par défaut
    Bonjour geutlastar,

    Tu peux utiliser une proc sql pour résoudre ton problème.

    Ici quelques exemples : http://gmladata.fr/creer-macro-variable-proc-sql/

    Le code qui t'intéresse semble être celui ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    PROC SQL; 
    	/* Séparateur simple */
    	SELECT DISTINCT Team INTO :liste_teams SEPARATED BY " , " FROM sashelp.baseball;
        /* Séparateur avec quote sur les noms de teams */
    	SELECT DISTINCT quote(trim(Team)) INTO :liste_teams2 SEPARATED BY " , " FROM sashelp.baseball WHERE Team like 'C%';
    QUIT; 
     
     
    %PUT &liste_teams;
    /* Atlanta , Baltimore , Boston , California , Chicago , Cincinnati , Cleveland.... */
     
    %PUT &liste_teams2;
    /* "California" , "Chicago" , "Cincinnati" , "Cleveland" */
    Cordialement,

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Merci suistrop,

    Je viens d'appliquer ta proc SQL et cela fonctionne

    C'est parfait, j'ai même étendu ta problématique à mon projet et cela à parfaitement fonctionné.

    Merci pour ton aide et ton bout de code.

    Bonne journée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/03/2018, 12h47
  2. Stocker les résultats d'une boucle for
    Par ju_cayenne dans le forum R
    Réponses: 1
    Dernier message: 23/03/2016, 16h49
  3. Réponses: 7
    Dernier message: 24/07/2015, 12h38
  4. Réponses: 3
    Dernier message: 06/05/2013, 16h04
  5. Stocker les resultats de ma boucle dans une Matrice
    Par Erebus dans le forum MATLAB
    Réponses: 0
    Dernier message: 06/05/2013, 14h55

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