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 :

Récupérer numero de semaine d'une date


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Récupérer numero de semaine d'une date
    Bonjour,

    Je cherche à créer une variable contenant le n° de semaine de ma date.
    Ma date est au format date9.
    Je fais semaine=week(date);
    mais ça ne marche pas, ça me donne comme résultat juste un point.

    Que dois-je faire ?

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    ce code fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    data TEST;
    format DATE date9.;
    do DATE=1 to 10000 by 100;
    WEEK=week(DATE);
    output;
    end;
    run;
    as tu contrôlé si tu as de données manquantes?

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci, je n'ai pas de donnée manquante.
    Mais ça me change mes dates de départ, j'obtiens des date de 1960 alors que j'avais des 2008 !

  4. #4
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    C'est la fonction week qui change tes dates de départ?

    pour sas l'univers commenca en 1960. mais tu peux changer l'année de départ par défaut en utilisant l'option yearcutoff=

    Il y a peut être une coquille suivant la version sas que tu utilises, et l'année que tu places par défaut.

    dis moi si ca fontionne

  5. #5
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    si tu passes à des dates en 1960, tu ne seras pas entrain d'écraser la date avec le numéro de la semaine que tu récupères sur ce même champ ?

    data ...
    set ...
    dt=week(dt)
    ..

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Non je n'écrase pas mes dates, elles changent complètement.
    Par exemple 20080102 devient 11APR1960 ou encore 20JUL1960 et plein d'autres valeurs !

  7. #7
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Voici comment fonctionnent les dates sous sas:

    ECe sont des variables de type numérique (un nombre, donc) sur lequel on applique un format. Il existe plusieurs formats possibles.
    Par défaut,
    1 c'est le premier janvier 1960,
    2 c'est le 2 janvier 1960,
    366 c'est le premier janvier 1961,
    etc

    Il semble qu'il y ait 102 jours entre le premier janvier 1960 et le 11 avril 1960.

    Contrôle tes données et reviens vers nous si tu t'en sors pas.

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    J'ai peut-être effectivement un problème de format. Quoi que là elles sont affichées 20080101 mais j'arrive à les transformer en 01JAN2008.
    Bref, j'ai fait autrement, avec des if pour donner un n° de semaine.
    Ca marche, mais ce n'est pas l'idéal !

  9. #9
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Je ne parle pas de problème de format. Avec ce code tu peux retrouver le valur du nombre associé à la date du premier janvier 2008

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    data test;
    format date date9.;
    do i=17000 to 19000;
    date=i;
    output;
    end;
    run;
    peux tu faire parvenir ton code?

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Oui ça me donne le numéro du jour, mais pas de la semaine.
    Mais merci quand même, je m'en suis sortie avec mes if.

  11. #11
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    OK

    LE code du dessous répondait à ton soucis de formats. Pour info, pour avoir la semaine, utilise la fonction week(). Tu dois pouvoir t'enn sortir simplement sans if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DATA test;
    format date date9.;
    do i=17000 TO 19000;
    date=i;
    SEM=week(i);
    output;
    end;
    run;

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    Attention les semaines US sont comptées différemment des semaines francaises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    data _NULL_;
       d = mdy(1, 1, 2010);
       wUSA = week(d);
       wFRANCE = week(d, 'V');
       put d ddmmyy10. +1 wUSA= wFRANCE= ;
    run;
    x

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

Discussions similaires

  1. [C#] Comment récupérer le numéro de semaine d'une date ?
    Par farfadet dans le forum Windows Forms
    Réponses: 9
    Dernier message: 17/07/2013, 16h33
  2. [AC-2003] Récupérer le numéro de semaine sur une date
    Par Snow06 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/09/2010, 16h18
  3. Récupérer n° semaine d'une date pour faire un tri
    Par mdr_cedrick dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/08/2009, 14h32
  4. Récupérer le numéro de la semaine sur une date
    Par bagbones dans le forum SQL
    Réponses: 11
    Dernier message: 30/07/2008, 14h18
  5. Réponses: 1
    Dernier message: 14/04/2006, 14h57

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