2016-11-14 4 views
1

In den folgenden sas Codes ..Datum ändern Art in sas Ausgabetabelle

data temp2; 
input id 1 @3 date mmddyy11.; 
cards; 
1 11/12/1980 
2 10/20/1996 
3 12/21/1999 
; 
run; 

proc print data = temp2; 
format date date9.; 
run; 

Rsults in:

id   date 

1 12NOV1980 
2 20OCT1996 
3 21DEC1999 

Betrachten Sie die folgende Ausgabe und Datumstyp:

data temp3a; 
set temp2; 
two_days = intnx('day',date,2); 
run; 
proc print data = temp3a noobs; 
format date two_days date9.; 
run; 

Ergebnis

id   date  two_days 

1 12NOV1980 14NOV1980 
2 20OCT1996 22OCT1996 
3 21DEC1999 23DEC1999 

Was ich will, ist, dass das Ausgangsdatum in folgendem Format sein sollte:

id   date  two_days 

1 12NOV80 14NOV80 
2 20OCT96 22OCT96 
3 21DEC99 23DEC99 

Auch wenn ich folgendes ausführen:

data have01211; 
set WORK.XX; 
two_days_before = intnx('day', Date, -2); 
two_days_after = intnx('day', Date, 2); 
run; 

proc print data = have01211 noobs; 
format two_days_before two_days_after date8.; 
run; 

Das Ergebnis i erhalten als folgt:

two_days_before two_days_after 
20764 20768 
20758 20762 
20763 20767 
20730 20734 

Warum das? Warum nicht das gleiche Format wie in den Originaldaten?

+0

Ich glaube, ich bin raus für two_days_before two_days_after als numerisch. – ZeekDSA

Antwort

1

In Bezug auf Ihre erste Frage - ändern Sie einfach das Format wie folgt:

data temp3a; 
set temp2; 
two_days = intnx('day',date,2); 
run; 
proc print data = temp3a noobs; 
format date two_days date8.; /* shorter date format length */ 
run; 

In Bezug auf die zweite Frage - Sie bewerben sich um das Format in der proc print aber nicht dem Datensatz (bin vorausgesetzt, Sie sprechen über have01211) . Einfach ein Format dieser Variablen im Daten Schritt legen Sie wie folgt vor:

data have01211; 
    set WORK.temp2; 
    two_days_before = intnx('day', Date, -2); 
    two_days_after = intnx('day', Date, 2); 
    format two_days_before two_days_after date8.; 
run; 

Erklärung - wenn Sie ein Format in einem proc Druck anwenden, gilt er nur für den Druckschritt. Wenn Sie ein Format hinzufügen, wenn ein Dataset erstellen, wird es dauerhaft mit dieser Datenmenge gespeichert - so in der Tat werden Sie keine Formatanweisung in allen nachfolgenden proc print ‚s brauchen:

proc print data = have01211 noobs; 
run; 
+0

Danke für die Klärung meiner Zweifel und die Korrektur meiner Fehler. – ZeekDSA