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 :

creation variables binaires avec conditions


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Profil pro
    CDP
    Inscrit en
    Septembre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : CDP

    Informations forums :
    Inscription : Septembre 2008
    Messages : 23
    Points : 22
    Points
    22
    Par défaut creation variables binaires avec conditions
    Bonjour ,

    Je dispose des champs suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    obs	date_debut 	date_fin 	         nbm	moisd
    1	01/01/2007	01/12/2008	12	1
    2	01/04/2007	01/05/2008	2	4
    Et je souhaite arriver au resultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    obs	janvier 	février	mars	avril	mai	juin ....
    1	1	1	1	1	1	1
    2	0	0	0	1	1	0
    Quelqu'un a t'il une idée de boucle qui pourrait remplacer le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if moisd=1 and month(date_f)=>1 then janv=1;else janv=0;
    	if (moisd=2 or (moisd=1 and nbm=>1) )and month(date_f)=>2 then fev=1;else fev=0;
    	if (moisd=3 or (moisd=2 and nbm=>1) or (moisd=1 and nbm=>2) )and month(date_f)=>3 then mars=1;else mars=0;
    ....merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 249
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Quel est le but du jeu exactement (en termes clairs ) ?
    Est-ce de marquer les mois calendaires compris entre deux dates quelque-soit l'année ?

    Dans un premier temps, pour alléger le code (éviter les IF; ELSE;...), on peut écrire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    janv= moisd=1 AND month(date_f)=>1 ;
    Bon courage !

  3. #3
    Membre à l'essai
    Profil pro
    CDP
    Inscrit en
    Septembre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : CDP

    Informations forums :
    Inscription : Septembre 2008
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    Merci pour l'allegément Bruno! Et oui, c'est que c'etait clair !!C'est effectivement pour marquer les mois calendaire.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 249
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Je ne comprends pas pourquoi, dans la seconde observation des résultats, juin est marqué à zéro...

    Bon courage !

  5. #5
    Membre à l'essai
    Profil pro
    CDP
    Inscrit en
    Septembre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : CDP

    Informations forums :
    Inscription : Septembre 2008
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    Parce que la date de fin est au 1er mai

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 249
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Au premier mai 2008 or on démarre en 2007 !
    Les mois de date début sont-ils toujours inférieurs ou égaux aux mois de date fin ?

    Bon courage !

  7. #7
    Membre à l'essai
    Profil pro
    CDP
    Inscrit en
    Septembre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : CDP

    Informations forums :
    Inscription : Septembre 2008
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    Mes humbles excuses... il s'agit d'un exemple fictif, l'année est la même partout. Le traitement ici sont sur les mois.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 249
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Les choses étant précisées , ce petit code devrait résoudre la question.
    En passant par un array, on marque les mois compris entre les deux mois de la même année...
    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
    data work.exemple ;
       input date_debut:ddmmyy10. date_fin:ddmmyy10. ;
       format date_debut date_fin ddmmyy10. ;
       cards ;
    01/01/2009	01/12/2009
    01/04/2009	01/05/2009
    ;
    run;
    data work.resultat (drop=i) ;
       set work.exemple ;
       array amois (*) jan feb mar apr may jun jul aug sep oct nov dec ;
       do i=1 to dim(amois) ;
          amois(i) = i GE month(date_debut) and i LE month(date_fin) ;
       end ;
    run ;
    ATTENTION : ce code ne fonctionne que pour les dates d'une meme année, avec mois_début <= mois_fin...
    Pour le rendre général, il n'y a plus qu'à le peaufiner !

    Bon courage !

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

Discussions similaires

  1. [2012] creation dun tableau avec condition sur colonne est index
    Par Lafleur2012 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/03/2014, 10h03
  2. variable calculée avec condition date
    Par vlunel dans le forum Deski
    Réponses: 0
    Dernier message: 28/08/2013, 00h59
  3. probleme dans la creation des objet avec condition
    Par yassin123441 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 28/04/2009, 11h03
  4. Réponses: 2
    Dernier message: 04/07/2008, 13h56
  5. Réponses: 22
    Dernier message: 21/04/2008, 16h14

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