Toutes les données utilisées dans ce script sont générées de manière interne via des étapes DATA. Le script crée des jeux de données (`ExamSchedule`, `check`) ou utilise des `DATA _NULL_` pour des démonstrations directes, en s'appuyant sur des dates littérales et des boucles pour simuler des séries temporelles ou des scénarios spécifiques.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP crée un jeu de données nommé `ExamSchedule`. Il génère une série de dates (`visdt`) du 1er au 10 juin 2007. Pour chaque date, la fonction `INTNX` est utilisée pour calculer le mois suivant avec différentes options d'alignement : par défaut (début du mois), 'beginning' (début du mois), 'middle' (milieu du mois), 'end' (fin du mois) et 'same' (même jour du mois). Les dates résultantes sont stockées dans de nouvelles variables (`next_d`, `next_b`, `next_m`, `next_e`, `next_s`) et formatées pour une meilleure lisibilité.
Copié !
title1 '3.4.3 Alignment Options';
data ExamSchedule;
do visdt = '01jun2007'd to '10jun2007'd;
next_d = intnx('month',visdt,1);
next_b = intnx('month',visdt,1,'beginning');
next_m = intnx('month',visdt,1,'middle');
next_e = intnx('month',visdt,1,'end');
next_s = intnx('month',visdt,1,'same');
output;
end;
format visdt next: date7.;
run;
1
title1 '3.4.3 Alignment Options';
2
3
DATA ExamSchedule;
4
DO visdt = '01jun2007'd to '10jun2007'd;
5
next_d = intnx('month',visdt,1);
6
next_b = intnx('month',visdt,1,'beginning');
7
next_m = intnx('month',visdt,1,'middle');
8
next_e = intnx('month',visdt,1,'end');
9
next_s = intnx('month',visdt,1,'same');
10
OUTPUT;
11
END;
12
FORMAT visdt next: date7.;
13
RUN;
2 Bloc de code
PROC PRINT
Explication : Cette procédure `PROC PRINT` affiche le contenu du jeu de données `ExamSchedule` créé précédemment. Cela permet de visualiser et de comparer les résultats des différentes options d'alignement de la fonction `INTNX` appliquées aux dates.
Copié !
proc print data=examschedule;
run;
1
PROC PRINTDATA=examschedule;
2
RUN;
3 Bloc de code
DATA STEP
Explication : Ce bloc `DATA _NULL_` est utilisé pour une démonstration directe sans créer de jeu de données permanent. Il illustre l'effet de l'option 'middle' ('m') de la fonction `INTNX` sur différentes dates. Il montre comment `INTNX` calcule le milieu du mois suivant, en tenant compte des années bissextiles ou du nombre variable de jours par mois, et affiche les résultats dans le log SAS.
Copié !
data _null_;
mfeb= intnx('month','01jan2009'd, 1, 'm');
leap= intnx('month','01jan2008'd, 1, 'm');
mapr= intnx('month','01jan2008'd, 3, 'm');
mmay= intnx('month','01jan2008'd, 4, 'm');
put mfeb= leap= mapr= mmay=;
format mfeb leap mapr mmay date9.;
run;
1
DATA _null_;
2
mfeb= intnx('month','01jan2009'd, 1, 'm');
3
leap= intnx('month','01jan2008'd, 1, 'm');
4
mapr= intnx('month','01jan2008'd, 3, 'm');
5
mmay= intnx('month','01jan2008'd, 4, 'm');
6
put mfeb= leap= mapr= mmay=;
7
FORMAT mfeb leap mapr mmay date9.;
8
RUN;
4 Bloc de code
DATA STEP
Explication : Ce second bloc `DATA _NULL_` démontre un cas particulier de `INTNX` : l'avancement vers des dates 'illégales'. Il calcule l'année suivante à partir du 29 février 2008 (année bissextile) et le mois suivant à partir du 31 mai 2008 (mois de 31 jours), en utilisant l'option 'same' ('s'). Les résultats, qui montrent comment SAS gère ces avancements (par exemple, le 28 février pour l'année suivante si non bissextile), sont affichés dans le log.
Copié !
data _null_;
leap = intnx('year', '29feb2008'd, 1, 's');
short= intnx('month','31may2008'd, 1, 's');
put leap= short=;
format leap short date9.;
run;
1
DATA _null_;
2
leap = intnx('year', '29feb2008'd, 1, 's');
3
short= intnx('month','31may2008'd, 1, 's');
4
put leap= short=;
5
FORMAT leap short date9.;
6
RUN;
5 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP crée un jeu de données nommé `check`. Il initialise une date de début fixe (`start`) au 14 septembre 2011. Ensuite, il boucle à travers les dates, de la date de début jusqu'à la 'même date' du mois suivant, calculée avec `INTNX`. À chaque itération, la fonction `INTCK` est utilisée pour compter le nombre de 'weeks' (semaines) entre la date de début et la date de fin courante, en utilisant les options par défaut, 'continuous' ('c') et 'discrete' ('d'). Le jeu de données `check` enregistre ces calculs.
Copié !
* Alignment for INTCK;
data check;
start = '14sep2011'd; * the 14th was a Wednesday;
do end = start to intnx('month',start,1,'s');
weeks = intck('weeks',start,end);
weeksc= intck('weeks',start,end,'c');
weeksd= intck('weeks',start,end,'d');
output check;
end;
format start end date9.;
run;
1
* Alignment for INTCK;
2
DATA check;
3
start = '14sep2011'd; * the 14th was a Wednesday;
4
DOEND = start to intnx('month',start,1,'s');
5
weeks = intck('weeks',start,END);
6
weeksc= intck('weeks',start,END,'c');
7
weeksd= intck('weeks',start,END,'d');
8
OUTPUT check;
9
END;
10
FORMAT start END date9.;
11
RUN;
6 Bloc de code
PROC PRINT
Explication : Cette procédure `PROC PRINT` finale affiche le contenu du jeu de données `check`. Elle permet d'examiner comment les différentes options de comptage ('par défaut', 'continuous', 'discrete') de la fonction `INTCK` affectent le calcul du nombre de semaines entre deux dates données.
Copié !
proc print data=check;
run;
1
PROC PRINTDATA=check;
2
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.