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

SAS Base Discussion :

Condition IF dans une étape DATA


Sujet :

SAS Base

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 37
    Par défaut Condition IF dans une étape DATA
    Bonjour tout le monde, j'espère que vous allez bien.
    J'ai un petit soucis, dans ma base de données j'ai plusieurs grades et je veux affecté un numéro à chaque grade.
    Par exemple :
    le grade : chef de bureau => grade code =1
    ect
    jai essayé le code suivant mais ca ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    data base_conv;
    set base_conv;
    if grade_actuel=chef_de_bureau then grade_code=4;
    if grade_actuel=chef_de_bureau_principal  then grade_code=5;
    if grade_actuel=chef_de_service then grade_code=6;
    if grade_actuel=chef_de_service_principal then grade_code=7;
    run;
    merci de m'aider

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Par défaut
    Essaye ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IF grade_actuel="chef_de_bureau" then grade_code=4;

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 37
    Par défaut
    oui je l'ai déjà essayé et ça ne marche pas et jai même essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if grade='chef_de_bureau' then grade_code=4;
    et ça n'a pas marché

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 37
    Par défaut
    c'est bon j'ai arriver à le résoudre, mais je me suis trouvée face à un autre problème :s ...je voudrais savoir comment affecter le résultat d'une proc sql à une variable. Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc SQL;
    SELECT DISTINCT grade
    FROM base_conv
    where grade LIKE '%cat.7%';
    Quit;
    je voudrais affecter le résultat de ce code à une variable, comment faire svp..
    ou bien l'utiliser dans une condition????
    des idées??
    merci

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Par défaut
    comme ceci ?

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 37
    Par défaut
    non ça ne marche pas parce que y'a pas qu'un résultat généré mais plusieurs.. je veux faire un test en me basant sur cette requête sous sas mais je ne sais pas comment faire..
    le test est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if grade = "proc SQL;
    SELECT DISTINCT grade
    FROM base_conv
    where grade LIKE '%cat.7%';
    Quit;" then grade_code=1 ;
    comment faire? pourriez vous m'aider svp

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Par défaut
    si il y en a plusieurs tu ne peux pas utiliser "=" .
    Il faut alors utiliser IN et regarde la doc il y a un exemple :
    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
     
       into :s1 separated by ','
          from proclib.houses;
    %put &s1;
    %put There were &sqlobs distinct values.;
     
    The results are written to the SAS log:
     
    3    proc sql noprint;
    4       select distinct style
    5          into :s1 separated by ','
    6          from proclib.houses;
    7
    8   %put &s1
     
    CONDO,RANCH,SPLIT,TWOSTORY

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Par défaut
    Je crois que tu as besoin d’une macro programme pour paramétrer toutes les modalités de la variable grade_actuel. Pour ta requête en question je te propose ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    proc sql noprint;
    select distinct quote(trim(grade))
    		into :gradelist separated by ','
    FROM base_conv
    where grade LIKE '%cat.7%';
    Quit;	    %put _user_ ;
     
    DATA grade_cod ;  
    SET base_conv  ;
    if grade in (&gradelist) then garde_cod=1 ;
    run ;
    Ward

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 37
    Par défaut
    merciiiii beaucoup pour vos réponses ça a marcher...

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

Discussions similaires

  1. Condition IF dans une étape Data
    Par SASMAN dans le forum SAS Base
    Réponses: 13
    Dernier message: 12/06/2012, 23h10
  2. Macro ne fonctionne pas dans une étape DATA
    Par cladoo dans le forum Macro
    Réponses: 2
    Dernier message: 07/11/2011, 09h36
  3. Boucle dans une étape data
    Par ueshiba dans le forum Macro
    Réponses: 3
    Dernier message: 26/05/2009, 11h21
  4. Réponses: 3
    Dernier message: 11/08/2008, 15h56
  5. Réponses: 1
    Dernier message: 30/05/2008, 14h52

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