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 :

Comment recuperer la valeur max d'une variable ou le nombre de variable d'une table sas


Sujet :

Macro

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 16
    Points : 17
    Points
    17
    Par défaut Comment recuperer la valeur max d'une variable ou le nombre de variable d'une table sas
    Bonjour, j'aimerai savoir comment recuperer la valeur maximale d'une variable ou le nombre total de variable d'une table data afin de l'utiliser dans des boucles.

    1. Si la variable var a comme modalite:

    1
    2
    3
    4
    5
    1
    4
    3
    6
    0
    Ici la valeur max de var c'est 6. Alors j''utilise cette valeur dans ma macro en faisant une boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %do j=1 %to 6;
    instruction;
    %end;
    2. Si j'ai le nombre de variable d'une table SAS, stocke dans nbrevar, par exemple, je veux l'utilise comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    %let j=1;
    %do %while (mar&j<nbrevar-2);
    instruction;
    j=&j+1;
    %end;
    Donc, mon soucis c'est ou recuperer ces infos et comment l'utiliser dans ma maro, au lieu de faire un proc means pour chaque variable et aller regarder la valeur maximal.

    Merci beaucoup !

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    En substance :

    -Tu obtiens la valeur max par une PROC SQL + INTO : unemacrovariable
    -Le nombre de variables dans la table s'obtient via une PROC CONTENTS + OUT=tabledesvariables. Tu dois compter le nombre de lignes et mettre cela dans une autre macro variable (PROC SQL + INTO : unemacrovariable marche bien aussi).

    Il y a plein d'exemples dans le forum pour cette question et tu peux rechercher dans la doc SAS le PROC SQL + INTO qui permet de créer des macros-variables.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par datametric Voir le message
    En substance :

    -Tu obtiens la valeur max par une PROC SQL + INTO : unemacrovariable
    -Le nombre de variables dans la table s'obtient via une PROC CONTENTS + OUT=tabledesvariables. Tu dois compter le nombre de lignes et mettre cela dans une autre macro variable (PROC SQL + INTO : unemacrovariable marche bien aussi).

    Il y a plein d'exemples dans le forum pour cette question et tu peux rechercher dans la doc SAS le PROC SQL + INTO qui permet de créer des macros-variables.
    Merci de ta reponse, mais je n'ai jamais utilise la proc SQL et je peux l'inserer dans une macro. La reponse existe surement dans le Forum, mais il faut avoir les bons mots cles.

    En gros ce que je veux faire c'est cree des variables indicatrices a partir d'une variable (x) et ensuite faire la proc freq de ces variables iindicatrices avec une autre variable disons y pour recuperer le nombre d'individu en focntion de cette variable y. Et ceci, pour plusieurs variables.
    Voici un bout de code:

    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
    %macro (table=)
    data table1; 
    set &table;
    keep x1--x5 y;
    %do i=1 %to 5;
    proc taranspose data=table1 design;
    class (x&i);
    id x&i y;
    output /* genere une table data1*/;
    %do j=1 %to max(x&i);
    proc freq data=data1;
    tables y*x&i&j; output=tab&i&j rename (count=count&i&j);
     
    proc sort tab&i&j;
    by y;
     
    end;
     
    data fusion;
    data11...data1max(x&i);
    end;
     
    %mend macro;
    Avoir la solution serait genial. Plus d'une semaine que je cherche la solution.

    Merci a tous !

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 16
    Points : 17
    Points
    17
    Par défaut réponse
    J'ai trouvé la solution. Je le poste au cas où !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    proc sql noprint;
     select count(distinct z)
          into :k
    	  from table
    	  order by z;
    quit;
     
    %do  j=1 %to k; 
     
    proc freq data=table;
    tables  age1*z&j/ out=cause&j;
     
    %end;

  5. #5
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut

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

Discussions similaires

  1. [AC-2000] Comment Recuperer la valeur d'un requete dans une variable
    Par michel.r06 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/01/2015, 13h26
  2. Comment recuperer la valeur MAX d'une cellule en DDE
    Par ShinobiFX dans le forum Excel
    Réponses: 13
    Dernier message: 05/01/2015, 23h26
  3. Comment recuperer la valeur d'un variable dans une methode actionlisner
    Par javacafe dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 22/05/2014, 16h39
  4. [XSLT] comment recuperer la valeur d'un noeud dans une variable
    Par enzostar dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 07/04/2010, 00h03
  5. Comment recuperer la valeur d'une variable de session avec du javascript
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/09/2006, 11h40

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