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 :

Proq freq et combinaisons possibles


Sujet :

Macro

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Proq freq et combinaisons possibles
    Bonjour,
    j'ai besoin de votre aide ça fait une semaine que ça fonctionna pas.
    j'ai enregistré les noms des variables de ma table dans une liste.
    je veux avoir tous les tableaux croisées distincts, ça veut dire lorsqu'il croises la variable 3 avec 4 , ce n'est pas nécessaire qu'il croise la 4 avec la 3.
    en faite j'ai réussi à ne pas avoir croiser les variables identiques ça veut dire 1 avec 1 ou bien 2 avec 2.
    SVP aide moi.

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 100
    Points
    100
    Par défaut Combinaisons de proc freq
    Bonjour,

    Je vous propose un macro-programme pour répondre à cette problématique :
    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
    proc sql ;
    select count(*) into :nbvar
    from dictionary.columns
    where libname='SASHELP'
    and memname='CLASS' ;
    select name into :mv1- :mv%cmpres(&nbvar) 
    from dictionary.columns
    where libname='SASHELP'
    and memname='CLASS' ;
    quit;
     
    %macro combi ;
     
    %do i=1 %to %eval(&nbvar-1) ;
    	%do j=%eval(&i+1) %to &nbvar;
     
    proc freq data=sashelp.class;
    tables &&mv&i*&&mv&j /list ;
    run;
    		%end;
    	%end;
    %end;
     
    %mend;
    %combi;
    L'exemple porte sur la table sashelp.class.
    Au départ,On récupère le nombre de variables de la table puis on recherche la liste des variables de la table, que l'on stocke dans des macro-variables mv1-mv&nbvar.
    Ensuite, avec une double boucle on exécute la proc freq. Les valeurs des indices des 2 boucles sont dépendant afin d'éviter de recroiser 2 fois les mêmes variables. Je suis parti du principe que l'on conservait toutes les variables de la table pour créer les différentes combinaisons.

    Cordialement ,

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 100
    Points
    100
    Par défaut
    PS: j'ai laissé un %end de trop dans ma réponse précédente.

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Vraiment Merci beaucoup ça fonctionne parfaitement.
    Juste j'ai une question concernant votre code,

    comment je peux afficher le contenu de la dernière macro variable
    j'ai tapé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    %Put &mv.&nbvar  
    %put compress(&mv.&nbvar);
    %put &mv%cmpres(&nbvar) ;
    SVP est ce que vouds pouvez m'expliquer

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 100
    Points
    100
    Par défaut
    Pour avoir la dernière macro variable,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    %let nbvar=%cmpres(&nbvar);
    %put &&mv&nbvar;
    La fonction %cmpres permet de supprimer les blancs.
    A partir de la 9.3 de SAS il est possible en ajoutant l'option trimmed (cf code ci-dessous) dans la proc sql de supprimer les blancs directement à la création de la macro variable, ce qui évite l'utilisation de %cmpres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc sql ;
    select count(*) into :nbvar	trimmed
    from dictionary.columns
    where libname='SASHELP'
    and memname='CLASS' ;
    Si vous souhaitez retrouver des valeurs de macro-variables, vous pouvez également consulter la sashelp.vmacro.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci infiniment.
    ce que vous disiez est trop précis pour moi ça m'a résolu le problème .

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

Discussions similaires

  1. Combien de combinaison possible pour uniqueidentifier
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/10/2006, 15h49
  2. Réponses: 16
    Dernier message: 20/10/2006, 16h31
  3. trouver les combinaisons possibles d'un tableau ?
    Par titoumimi dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 20/09/2006, 20h29
  4. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 00h11
  5. Sortir d'un tableau les combinaisons possibles
    Par juelo dans le forum Algorithmes et structures de données
    Réponses: 33
    Dernier message: 26/03/2006, 17h11

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