2017-05-27 2 views
-1

Ich habe mehrere Zeiträume jedes Jahr, wo Tag Null ist ein bestimmter Tag. Ich muss eine Liste aller vor und zurückgehenden Daten zwischen dem Anfang und dem Ende des Zeitraums mit der zugehörigen Tagesnummer erstellen.Wie die Anzahl der Tage zwischen zwei Daten in SAS

Hier ein Beispiel: Startdatum (08APR2016) Day Zero (01May2016) End Date (04Aug2016)

Die Liste würde wie folgt aussehen:

Day Date 
-37 08APR2016 
-36 09APR2016 
. 
. 
0 01MAY2016 
1 02May2016 
. 
. 
94 04AUG2016 

Ich bin nicht sicher Wie schreibe ich den SAS-Code notwendig, um dies zu tun, und jede Hilfe wäre willkommen.

Ich mache es derzeit durch Erstellen einer ID-Variablen mit N, die vom Startdatum bis zum Enddatum zählt. Für jede Liste füge ich dann die richtige Zahl hinzu, um das Datum auf Null zu setzen. Also im obigen Beispiel zum Beispiel würde ich N -38 für den ersten tun und dann von dort hochzählen.

Aber es wird unordentlich, wenn es für mehrere Listen tut und ich hoffte, es gab einen schnellen Weg, um einen bestimmten Tag Null zu machen und dann rückwärts bis zum ersten Tag und bis zum letzten Tag zu zählen.

+0

Um die SO-Regeln zu erfüllen, müssen Sie posten, was Sie versucht haben. SAS-Daten sind Ganzzahlen (google it), sodass Sie sie als reguläre Zahlen erhöhen/zählen können und die Logik korrekt ist. Wenn Sie Anfang und Ende haben, ignorieren Sie den Null-Tag und die Schleife vom Anfang bis zum Ende und verwenden Sie nur den Tag Null, um die Differenz zu berechnen. Da die Daten ganze Zahlen sind, um die Differenz zu berechnen, können Sie die Daten direkt subtrahieren. – Reeza

Antwort

0

was Sie fragen, ist ziemlich geradlinig. Sie sollten einige Sachen ausprobieren und sehen, was funktioniert und was nicht.

data want; 
retain day date; 
keep day date; 
format date date9.; 

startDate = '08APR2016'd; 
endDate = '04AUG2016'd; 
zeroDate = '01MAY2016'd; 

do i = startDate to endDate; 
    day = i - zeroDate; 
    date = i; 
    output; 
end; 
run; 
Verwandte Themen