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
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
ce code fonctionne:
as tu contrôlé si tu as de données manquantes?
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;
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 !
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
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)
..
Non je n'écrase pas mes dates, elles changent complètement.
Par exemple 20080102 devient 11APR1960 ou encore 20JUL1960 et plein d'autres valeurs !
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.
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 !
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
peux tu faire parvenir ton code?
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;
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.
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;
Attention les semaines US sont comptées différemment des semaines francaises:
x
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;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager