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 :

Stocker les données des derniers 8 semaines dans une table


Sujet :

SAS Base

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 86
    Points : 83
    Points
    83
    Par défaut Stocker les données des derniers 8 semaines dans une table
    Bonjour,

    je dois stocker les données des derniers 8 semaines dans une table, jusque là pas de soucis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    data stock;
    set   globale  ;
    if  week(date() ) < = 52 and Year(date() ) = year_photo2  then do;
        if  tt - week_photo2 <= 7 then output stock;
    end;
    run;
    mon probleme se posera une fois on est en 2016 week 01 alors la mon code va se planter.
    comment faire pour eviter ce soucis en 2016 surtout la week 01 il doit prendre les week (52 51 50 49 48 47 46 et 1).

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant Finance/Assurance
    Inscrit en
    Décembre 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Finance/Assurance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 198
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    Une solution serai de faire un code qui conserve les 8 dernières semaines à partir de la date du jour. La fonction Intnx peut t'aider à faire cela couplé avec une clause where dans ton appel de table(le set statement). Avec ceci tu peux actualiser (si besoin) ta table stock quand tu le souhaites et sans remettre le nez dans le code !

    Par 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
    17
    18
     
    data test;
    input date ddmmyy10. ;
    format date ddmmyy10.;
    cards;
    20/01/2015
    24/01/2015
    30/01/2015
    10/06/2015
    20/08/2015
    24/08/2015
    30/08/2015
    ;
    run;
     
    data stock;
    set test(where=(date GE intnx('week',today(),-8,'b')));
    run;
    Bon courage!

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 86
    Points : 83
    Points
    83
    Par défaut
    Merci pour la reponse.

    et si je dois me limiter uniquement à la semaine qui correspond exactement -8 et ne pas pas prendre toute les autres semaines.

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant Finance/Assurance
    Inscrit en
    Décembre 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Finance/Assurance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 198
    Points : 638
    Points
    638
    Par défaut
    L'opérateur Between devrait faire l'affaire :

    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
     
    data test;
    input date ddmmyy10. ;
    format date ddmmyy10.;
    cards;
    20/01/2015
    24/01/2015
    30/01/2015
    10/06/2015
    26/07/2015
    28/07/2015
    01/08/2015
    02/08/2015
    30/08/2015
    ;
    run;
     
    data stock;
    set test(where=(date between intnx('week',today(),-8,'b') and intnx('week',today(),-8,'E')));
    run;
     
    proc print;run;

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/05/2015, 11h14
  2. charger les données d'un fichier .txt dans une table
    Par lemerite dans le forum Développement
    Réponses: 6
    Dernier message: 10/09/2008, 18h33
  3. Importer les données d'un fichier excel dans une table
    Par dams95190 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/12/2007, 10h35
  4. Réponses: 4
    Dernier message: 15/08/2006, 17h40
  5. Réponses: 5
    Dernier message: 06/11/2005, 11h26

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