Bonsoir,
Je cherche à calculer le semestre à partir d'une date.
Mais je n'arrive pas à trouver la fonction sas correspondante.
Pourriez vous m'aider ?
Bonsoir,
Je cherche à calculer le semestre à partir d'une date.
Mais je n'arrive pas à trouver la fonction sas correspondante.
Pourriez vous m'aider ?
A ma connaissance,
SAS propose des formats qui permettent de retrouver directement le trimestre, mais pas le semestre, cf exemples :
Il doit même y avoir un format qtr. qui donne le trimestre sans l'année, mais à partir de la v9.2 seulement (et oui, je suis en v9.1.3 ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 data test ; date = "01jan2010"d ; year_Q_quarter = put(date, yyq.) ; year_quarter = put(date, yyqn.) ; putlog _all_ ; run ;
Pour avoir le semestre, il faudra donc feinter. Proposition, en partant de la fonction month() :
Tu peux te faire plaisir en faisante une macro %semestre() si tu en fais un usage fréquent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 data test ; date = "01jan2010"d ; month = month(date) ; semestre = 1 + (month(date) > 6) ; putlog _all_ ; run ;
Il doit être possible de créer une fonction, mais ça j'ai jamais fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 %macro semestre(date) ; 1 + (month(&date.) > 6 ) %mend ; data test ; date = "01jan2010"d ; semestre = %semestre(date) ; putlog _all_ ; run ;
Bonjour,
il ya plusieurs comprehensions possibles. Est ce qu'il s'agit de renvoyer le semestre de l'annee en cours?(0 ou 1 suivant qu'on est avant le 30 juin ou apres)?Je cherche à calculer le semestre à partir d'une date.
essaye la fonction intck avec l'interval semiyear.
http://dept.kent.edu/sas/lgref/z0212868.htm
Avec intnx je recupere le debut de l'annee
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 data test; format date date9.; date=15362; semester=intck('semiyear',intnx('year',date,0,"b"),date); output; date=15552; semester=intck('semiyear',intnx('year',date,0,"b"),date); output; run;
Bonjour,
Manoutz, ce que je cherche est effectivement une fonction qui me permettrait de retourner le trimestre T1ou Q1. La fonction
que Remi m'indiquait fonctionne très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part year_Q_quarter = put(date, yyq.) ;
Par contre pour le semestre je n'ai pas trouvé.
J'essaye ton bout de code.
c'est exactement ce que je voulais en ajoutant +1 comme dans le code de Rémi.
Rémi a écrit :
Comment faire pour créer cette fonction que je pourrais rappeler quand je voudrais ?Il doit être possible de créer une fonction, mais ça j'ai jamais fait
si tu as la 9.2/9.3 tu regardes la proc FCMP et son cadre d'utilisation.
N'oubliez pas de cliquer sur lorsque votre problème est réglé !
ou passer par une macro fonction, tout simplement...
D'ailleurs, tu dois pouvoir parameter si tuveux calculer sur le trimestre ou le semestre, en utilisant (et en appliquant au trimestre, selon) le code que je t'ai fourni
ENT((MOIS(A1)-1)/6)+1 calcule le numéro du semestre
ENT((MOIS(A1)-1)/3)+1 calcule le numéro du trimestre
Bonjour,
J'avais utilisé la solution de Manoutz.
Mais ton bout de code fonctionne parfaitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 DATA test; FORMAT date yymmn6.; date='22JAN2015'd; semester=INTCK("SEMIYEAR",INTNX('YEAR',date,0,"B"),date); semestre=CEIL((MONTH(date) -1)/6) +1 ; OUTPUT; date='31JUL2015'd; semester=INTCK("SEMIYEAR",INTNX('YEAR',date,0,"B"),date); semestre=CEIL((MONTH(date) -1)/6) +1 ; OUTPUT; 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