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éer des variables en fonction de deux boucles do


Sujet :

Macro

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Créer des variables en fonction de deux boucles do
    Bonjour à tous et merci d'avance à ceux qui prendront le temps de me lire ;!
    Je commence à m'initier aux macros sur SAS, et c'est pas encore ça. Arrivant de R, les boucles sur SAS me sont encore bien farfelues. J'ai donc une question, je bloque dessus et impossible d'avancer ...

    Pour ce qui est du contexte, je dispose d'une table regroupant les caractéristiques d'une population hétérogène avec la consommation ou non d'anxiolytiques (i.e. benzodiazepine), ainsi que leur date de délivrance du médicament (EXE_SOI_DTD) et de fin (EXE_SOI_DTF).
    Afin de créer des variables dépendantes du temps, je souhaite tout simplement par le biais d'une instruction IF vérifier si le sujet a consommé ou non ce médicament à un mois donné et une année donnée.

    Je pars donc d'une première boucle do (année de 2007 à 2015) et une seconde boucle (mois de 1 à 12). Je vérifie donc que la condition est respectée pour attribuer à une variable que je crée, la valeur 1 si c'est vérifié. MAIS mon problème est là ... Je cherche donc à créer plusieurs variables (exemple : conso_1_2010 ; conso_12_2014, etc.), 108 variables au total, et impossible de récupérer les valeurs des indices des boucles pour nommer les variables.

    Quelqu'un pourrait-il me venir en aide ... s'il vous plait ahah

    Voici le code de ma macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    %macro conso_m;
    data bdd.prescription;
    set bdd.prescription;
    	%do y=2007 %to 2015;
    		%do m=1 %to 12;
    			%if benzodiazepine = 1 %then
    				%do;
    					%if (&y. >= year(EXE_SOI_DTD) and &y. <= year(EXE_SOI_DTF) and &m. >= month(EXE_SOI_DTD) and &m. <= month(EXE_SOI_DTF)) %then conso_&m._&y. = 1;
    				%end;
    			%else conso_&m._&y. = 0;
    		%end;
    	%end;
    run; 
    %mend;

  2. #2
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Tu n'étais pas loin de la solution, il te manque juste deux "%do;...;%end;" à rajouter et cela devrait fonctionner :

    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
     
    %macro conso_m;
    data bdd.prescription;
    set bdd.prescription;
    	%do y=2007 %to 2015;
    		%do m=1 %to 12;
    			%if benzodiazepine = 1 %then
    				%do;
    					%if (&y. >= year(EXE_SOI_DTD) and &y. <= year(EXE_SOI_DTF) and &m. >= month(EXE_SOI_DTD) and &m. <= month(EXE_SOI_DTF)) %then %do; conso_&m._&y. = 1; %end;
    				%end;
    			%else %do; conso_&m._&y. = 0; %end;
    		%end;
    	%end;
    run; 
    %mend;
    Bon courage.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    J'ai oublié de clôturer la discussion ... Le problème venait en fait du fait que dans un dataset il ne faut pas mettre %if %then %do etc. Donc j'ai tout simplement placé mon dataset dans les 2 boucles, et je n'ai pas mis les symboles % dans le dataset et cela a fonctionné.

    Merci de ton aide en tout cas !

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

Discussions similaires

  1. [XL-2013] créer une boucle pour créer des onglets en fonction des valeurs d'une colonne
    Par BOUJ08 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/02/2016, 12h46
  2. Fonction pour créer des variables
    Par Spitfire 95 dans le forum Général Python
    Réponses: 21
    Dernier message: 10/12/2010, 21h21
  3. Créer des variables dans une boucle
    Par xess91 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/03/2010, 11h41
  4. [E-07] créer des variables dans une boucle ?
    Par edouardg dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/12/2008, 23h19
  5. Créer des variables
    Par Thundie dans le forum Général Python
    Réponses: 6
    Dernier message: 03/02/2006, 18h49

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