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 :

Syntaxe pour condition sur macrovariable


Sujet :

Macro

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 25
    Points
    25
    Par défaut Syntaxe pour condition sur macrovariable
    Bonjour,
    sorry, encore une question concernant les conditions sur une macrovariable; mais je n'ai pas trouvé la réponse à mon problème dans les anciens messages.

    Voilà, je voudrais créer une variable sex , qui vaudrait 1 quand &sex=m et 2 quand &sex=f.
    Avec le code ci-dessous, il crée bien une variable sex qui vaut 1 la première fois que je le fais tourner si &var=m; mais si je recommence avec &var=f (ou une autre valeur), sex vaut toujours 1.
    De plus, il crée 2 nouvelles variables, m et f , inutiles et vides.

    J'ai essayé ce meme code avec des guillemets et des doubles guillemets , ça ne marche pas non plus....

    Pouvez-vous m'aider svp ? je m'arrache les cheveux ....merci , Françoise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %let sex=m;
    data RR_educat4_9193_m;
    set RR_educat4_9193_m_0;
    where substr(B,3,3)='edu' or substr(B,4,3)='edu';
    length Measure $10  SES_Var $7    ; Measure='Risk Ratio';
    sex=0;
    if &sex=m then sex=1;
    else if &sex=f then sex=2;
    run;

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mars 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 48
    Points : 63
    Points
    63
    Par défaut
    Est-ce que tu peux nous mettre quelques lignes de ta table pour qu'on puisse voir le pourquoi du comment ?
    N'oubliez pas de cliquer sur résolu si votre problème est résolu .

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    Essaye en rajoutant des guillemets autour de tes lettres m et f dans ton if, ça devrait marcher. Là il interprète m et f comme des variables. Comme il ne les connaît pas il les crée (et elles sont donc vides). La confusion provient du fait que lors du %let, on ne met pas de guillemets après le '=' pour écrire du texte alors que c'en est bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %let sex=m;
    data RR_educat4_9193_m;
    set RR_educat4_9193_m_0;
    where substr(B,3,3)='edu' or substr(B,4,3)='edu';
    length Measure $10  SES_Var $7    ; Measure='Risk Ratio';
    sex=0;
    if &sex="m" then sex=1;
    else if &sex="f" then sex=2;
    run;

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello,

    Je n'ai pas bien compris ce que tu voulais faire, néanmoins de te propose ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    %let sex=m;
    data RR_educat4_9193_m;
    set RR_educat4_9193_m_0;
    where substr(B,3,3)='edu' or substr(B,4,3)='edu';
    length Measure $10  SES_Var $7    ; Measure='Risk Ratio';
    *sex=0;/* ça n'a aucun sens*/
    if "&sex"="m" then sex=1;
    else if "&sex"="f" then sex=2;
    run;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 25
    Points
    25
    Par défaut
    Super ça marche, merci beaucoup !
    et un grand merci pour ce blog , c'est vraiment utile et on se sent moins seul ! Françoise

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

Discussions similaires

  1. [PHP 5.0] Autre syntaxe pour condition if
    Par goofyto8 dans le forum Langage
    Réponses: 2
    Dernier message: 13/08/2014, 11h48
  2. Réponses: 6
    Dernier message: 01/03/2012, 18h25
  3. [AC-2007] ETAT : Syntaxe de conditions sur en-tête de groupe
    Par sendme dans le forum IHM
    Réponses: 1
    Dernier message: 20/04/2011, 08h34
  4. Syntaxe pour poster sur 2 tables
    Par saidihno dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/06/2010, 11h19
  5. Bonne syntaxe pour condition dans une requete
    Par cedlannoy dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/03/2007, 15h24

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