Die für die Beispiele verwendeten Daten werden direkt im Skript über einen DATA-Schritt mit `datalines` erstellt. Der Datensatz 'test' enthält SAS-Daten und deren numerische Äquivalente, um die Konvertierungsfunktionen zu demonstrieren.
1 Codeblock
DATA STEP Data
Erklärung : Dieser DATA-Schritt erstellt den Datensatz 'test' mit zwei Variablen: 'date' (SAS-Datumsformat) und 'date2' (numerisches Format). Die Werte werden über `datalines` definiert, um als Konvertierungsbeispiele zu dienen.
Kopiert!
data test;
input date date2;
informat date date9.;
format date date9.;
datalines;
31DEC2016 20161231
01JAN2017 20170101
;
run;
1
DATA test;
2
INPUT date date2;
3
informat date date9.;
4
FORMAT date date9.;
5
DATALINES;
6
31DEC2016 20161231
7
01JAN2017 20170101
8
;
9
RUN;
2 Codeblock
PROC FCMP
Erklärung : Dieser `PROC FCMP`-Block kompiliert die Funktion `DateToNum`. Sie nimmt ein SAS-Datum (`DateDay`), extrahiert Jahr, Monat und Tag und kombiniert sie dann zu einer einzigen Ganzzahl im JJJJMMTT-Format (z. B. 20161231 für den 31. Dezember 2016).
Kopiert!
proc fcmp outlib=work.cat_function.test;
function DateToNum(DateDay);
da = day(DateDay);
mo = month(DateDay);
ye = year(DateDay);
res = (ye * 10000) + (mo * 100) + da;
return(res);
endsub;
run;
1
PROC FCMP outlib=work.cat_function.test;
2
function DateToNum(DateDay);
3
da = day(DateDay);
4
mo = month(DateDay);
5
ye = year(DateDay);
6
res = (ye * 10000) + (mo * 100) + da;
7
return(res);
8
endsub;
9
RUN;
3 Codeblock
PROC FCMP
Erklärung : Dieser `PROC FCMP`-Block kompiliert die Funktion `NumToDate`. Sie nimmt eine Ganzzahl im JJJJMMTT-Format (`DateNum`), leitet daraus Jahr, Monat und Tag ab und verwendet dann die Funktion `mdy`, um sie in ein standardmäßiges SAS-Datum umzuwandeln.
Kopiert!
proc fcmp outlib=work.cat_function.test;
function NumToDate(DateNum);
ye = int(DateNum/10000);
mo = int(DateNum/100)-(ye*100);
da = DateNum - (int(DateNum/100) * 100);
res = mdy(mo,da,ye);
return(res);
endsub;
run;
1
PROC FCMP outlib=work.cat_function.test;
2
function NumToDate(DateNum);
3
ye = int(DateNum/10000);
4
mo = int(DateNum/100)-(ye*100);
5
da = DateNum - (int(DateNum/100) * 100);
6
res = mdy(mo,da,ye);
7
return(res);
8
endsub;
9
RUN;
4 Codeblock
DATA STEP
Erklärung : Dieser DATA-Schritt verwendet die zuvor kompilierten Funktionen `DateToNum` und `NumToDate`. Er erstellt eine neue Variable 'Date2Num' durch Konvertierung der Variable 'date' (SAS-Datum) in ein numerisches Format und eine Variable 'num2date' durch Konvertierung der Variable 'date2' (numerisch) in ein SAS-Datumsformat.
Kopiert!
data test;
set test;
format num2date date9.;
Date2Num = DateToNum(date);
num2date = NumToDate(date2);
run;
1
DATA test;
2
SET test;
3
FORMAT num2date date9.;
4
Date2Num = DateToNum(date);
5
num2date = NumToDate(date2);
6
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.
Urheberrechtsinformationen : Creation date : 14/04/2017 (fr)
Last update : 14/04/2017 (fr)
Author(s) : Nicolas DUPONT
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.