Alle in diesem Skript verwendeten Daten werden intern über DATA-Schritte generiert. Das Skript erstellt Datensätze (`ExamSchedule`, `check`) oder verwendet `DATA _NULL_` für direkte Demonstrationen, wobei literale Daten und Schleifen verwendet werden, um Zeitreihen oder spezifische Szenarien zu simulieren.
1 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP-Block erstellt einen Datensatz namens `ExamSchedule`. Er generiert eine Reihe von Daten (`visdt`) vom 1. bis 10. Juni 2007. Für jedes Datum wird die Funktion `INTNX` verwendet, um den nächsten Monat mit verschiedenen Ausrichtungsoptionen zu berechnen: Standard (Monatsanfang), 'beginning' (Monatsanfang), 'middle' (Monatsmitte), 'end' (Monatsende) und 'same' (gleicher Tag des Monats). Die resultierenden Daten werden in neuen Variablen (`next_d`, `next_b`, `next_m`, `next_e`, `next_s`) gespeichert und zur besseren Lesbarkeit formatiert.
Kopiert!
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 Codeblock
PROC PRINT
Erklärung : Diese `PROC PRINT`-Prozedur zeigt den Inhalt des zuvor erstellten Datensatzes `ExamSchedule` an. Dies ermöglicht es, die Ergebnisse der verschiedenen Ausrichtungsoptionen der Funktion `INTNX`, die auf die Daten angewendet wurden, zu visualisieren und zu vergleichen.
Kopiert!
proc print data=examschedule;
run;
1
PROC PRINTDATA=examschedule;
2
RUN;
3 Codeblock
DATA STEP
Erklärung : Dieser `DATA _NULL_`-Block wird für eine direkte Demonstration verwendet, ohne einen permanenten Datensatz zu erstellen. Er veranschaulicht die Auswirkung der Option 'middle' ('m') der Funktion `INTNX` auf verschiedene Daten. Er zeigt, wie `INTNX` die Mitte des nächsten Monats unter Berücksichtigung von Schaltjahren oder der variablen Anzahl von Tagen pro Monat berechnet und die Ergebnisse im SAS-Log anzeigt.
Kopiert!
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 Codeblock
DATA STEP
Erklärung : Dieser zweite `DATA _NULL_`-Block demonstriert einen Sonderfall von `INTNX`: den Vorlauf zu 'ungültigen' Daten. Er berechnet das nächste Jahr ab dem 29. Februar 2008 (Schaltjahr) und den nächsten Monat ab dem 31. Mai 2008 (Monat mit 31 Tagen) unter Verwendung der Option 'same' ('s'). Die Ergebnisse, die zeigen, wie SAS diese Vorschübe handhabt (z. B. den 28. Februar für das nächste Jahr, wenn es kein Schaltjahr ist), werden im Log angezeigt.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP-Block erstellt einen Datensatz namens `check`. Er initialisiert ein festes Startdatum (`start`) auf den 14. September 2011. Anschließend wird über die Daten von der Startdatum bis zum 'gleichen Datum' des nächsten Monats, berechnet mit `INTNX`, iteriert. In jeder Iteration wird die Funktion `INTCK` verwendet, um die Anzahl der 'weeks' (Wochen) zwischen dem Startdatum und dem aktuellen Enddatum zu zählen, wobei die Standardoptionen, 'continuous' ('c') und 'discrete' ('d') verwendet werden. Der Datensatz `check` speichert diese Berechnungen.
Kopiert!
* 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 Codeblock
PROC PRINT
Erklärung : Diese abschließende `PROC PRINT`-Prozedur zeigt den Inhalt des Datensatzes `check` an. Sie ermöglicht es, zu untersuchen, wie die verschiedenen Zähloptionen ('Standard', 'continuous', 'discrete') der Funktion `INTCK` die Berechnung der Anzahl der Wochen zwischen zwei gegebenen Daten beeinflussen.
Kopiert!
proc print data=check;
run;
1
PROC PRINTDATA=check;
2
RUN;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.