Hallo @Sven4IBM ,
wenn Du das Modul "ETS - Econometric Time Series" lizensiert hast, kannst Du das sehr bequem mit einer "ETS-Prozedur namens "EXPAND" machen:
data kurs;
input whg $ kursdat :ddmmyy10. kurs :commax.;
format kursdat ddmmyyp10.;
datalines;
USD 29.12.2017 1,1993
USD 02.01.2018 1,2065
USD 05.01.2018 1,2345
USD 07.01.2018 1,3456
USD 08.01.2018 1,7894
USD 09.01.2018 1,4234
USD 11.01.2018 1,7831
USD 13.01.2018 1,8731
USD 14.01.2018 1,1231
USD 15.01.2018 1,4312
USD 19.01.2018 1,7654
USD 22.01.2018 1,2840
;
proc expand data=kurs out=Kurs_mit_Lags_und_Leads method=none ;
id kursdat;
convert kurs = kurs_lag2 / transformout=(lag 2);
convert kurs = kurs_lag1 / transformout=(lag 1);
convert kurs = kurs_lead1 / transformout=(lead 1);
convert kurs = kurs_lead8 / transformout=(lead 8);
run;
Ansonsten gibt es leider in BASE-Code nur eine "einfache" Funktion namens "LAG", um einen vorangegangenen Wert in die aktuelle Zeile zu schreiben, jedoch nicht den umgekehrten Fall.
https://documentation.sas.com/?docsetId=lefunctionsref&docsetTarget=n0l66p5oqex1f2n1quuopdvtcjqb.htm&docsetVersion=9.4&locale=en
... View more