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 :

[Macro] combinaison multiples de valeurs pour n variables et k individus


Sujet :

Macro

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 16
    Points : 16
    Points
    16
    Par défaut [Macro] combinaison multiples de valeurs pour n variables et k individus
    Bonjour,
    J’ai pour objectif de créer un programme sas qui permette de créer autant de tables que de combinaisons de valeur possible entre 3 variables et n observations. En d’autres termes l’objectif, est que si l’on à 3 variables A, B, et C (pouvant chacune prendre les valeurs 0 et 1) ainsi que 4 individus, le programme permette d’obtenir des croissements existant, du genre

    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
    Table1
    	A 	B	C
    Indv1   0          0          0
    Indv2   0          0          0
    Indv3   0          0          0
    Indv4   0          0          0
     
    Table 2
    	A 	B	C
    Indv1   0          1          0
    Indv2   0          0          0
    Indv3   0          0          0
    Indv4   0          0          0
     
    Table 3
    	A 	B	C
    Indv1   0          0          0
    Indv2   0          0          1
    Indv3   0          0          0
    Indv4   0          0          0
    Ainsi de suite.

    Concrètement j’ai réalisé les programmes suivant :
    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
    data _null_ ;
    set popi;
    call symput ("maxprofil", _N_ );
    run;
    %put %sysevalf(&maxprofil);
     
    Pour obtenir le nombre d’individu ayant des caractéristiques différentes dans ma table popi.
     
    Par la suite soit j’exécute :
    %macro simu;
    	%do i = 0 %to 10 %by 5 ; 
    	%do j = 0 %to 10 %by 2 ;
    	%do k = 0 %to 10       ;
     
    	data table&i&j&k;
    	do profil = 1 to %sysevalf(&maxprofil);
    	do mortabst = &i/10;
    	do mortexp = &j/10;
    	do exp= &k/10;
    	output;
    	end;
    	end;
    	end;
    	end;
    	run;
     
    	%end;
    	%end;
    	%end;
    %mend simu;
    %simu;
    Et obtient des tables du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Table 1
    	Mortabst   	mort exp 	exp
    Indv1         0                        0               1
    Indv2         0                        0               1
    Indv3         0                        0               1
    Indv4         0                        0               1
     
    Table 2
    	Mortabst   	mort exp 	exp
    Indv1         0                        1               1
    Indv2         0                        1               1
    Indv3         0                        1               1
    Indv4         0                        1               1
    J’ai donc bien l’ensemble des combinaisons possibles entre variables, mais les combinaissons sont identiques pour tout les individus ou profil.

    Soit j’exécute :
    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
    %macro simu2;
    	%do i = 0 %to 10 %by 5 ; 
    	%do j = 0 %to 10 %by 2 ;
    	%do k = 0 %to 10       ;
     
    	data table&i&j&k;
    	do mortabst = &i/10;
    	do mortexp = &j/10;
    	do exp= &k/10;
    	output;
    	end;
    	end;
    	end;
    	run;
     
    	%end;
    	%end;
    	%end;
    %mend simu;
    %simu2;
    Et obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Table 1
     	Mortabst   	mort exp 	exp
    Indv1         0                        1               1
     
    Table 5
     	Mortabst   	mort exp 	exp
    Indv2         1                        0               1
    mais il me faudrait alors compiler les différents profils de manière à avoir l’ensemble des combinaison possible entre individus.

    Voilà, voilà, j’espère être clair et que quelqu’un connaît une solution à ce problème ou même me proposer une autre orientation dans ma réflexion.

    Merci de l’intérêt que vous y porterez.
    Bonne journée.

  2. #2
    Membre éprouvé
    Avatar de steelspirit
    Homme Profil pro
    SAS discute
    Inscrit en
    Janvier 2008
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SAS discute
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 472
    Points : 916
    Points
    916
    Par défaut
    Bonsoir,
    humm ... pas très clair tout ça
    La difficulté viens de 2 choses :

    -> l'algorithme qui est un algo de parcours d'arbre binaire
    -> le fait qu'on peut avoir plusieurs observations

    Je pense que dans un premier temps il faut essayer avec une seule observation. On peut utiliser une macro récursive pour sortir toute les combinaisons.

    Sinon l'autre solution est de passer par des matrices avec le module SAS/IML mais je ne connais pas bien ce module.

    Bon courage,

    Steel
    Avant de poser votre question, n'oubliez pas :
    FAQ, SAS DOC et de ce forum

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Je pense que dans un premier temps il faut essayer avec une seule observation. On peut utiliser une macro récursive pour sortir toute les combinaisons.
    oui c'est ce que je fait avec la macro simu2 mais l'ennui est de pouvoir recompiler les différentes combinaisons entre observation.
    Quoi qu'il en soit merci, je vais essayer de m'initier à SAS/IML et je verrai ce que je trouve comme soluion

Discussions similaires

  1. Valeurs Multiples pour une variable
    Par backdraf dans le forum Développement
    Réponses: 5
    Dernier message: 07/06/2011, 16h34
  2. probleme de perte de valeur pour une variable
    Par eug4016 dans le forum C
    Réponses: 9
    Dernier message: 06/08/2010, 18h04
  3. [MySQL] passage de deux valeurs pour une variable
    Par kate59 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 02/06/2009, 14h02
  4. [MySQL] Plusieurs valeurs pour une variable à injecter
    Par pony99 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 03/12/2008, 12h04
  5. Réponses: 2
    Dernier message: 18/08/2008, 18h53

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