Hallo Anja,
alles klar, da hatte ich das "rollierend" wohl nicht ganz verstanden.
Wenn ich das richtig sehe, geht es wohl einfach um eine Vervielfältigung der Datensätze mit jeweiliger Einordnung.
Ich habe eine Lösung, ähnlich zu der von Wolfgang:
data have;
input year firmID earnings laggedEarnings;
datalines;
1970 1 100 0
1970 2 150 0
1970 3 100 0
1970 4 200 0
1971 1 100 100
1971 2 150 150
1972 1 150 100
1972 2 100 150
1981 1 100 0
1981 2 150 0
1981 3 200 0
1981 4 150 0
run;
data want2 (drop=n);
set have;
do n = -9 to 0; /* oder n = -9 to 9 je nachdem, was gewünscht ist */
window = year + n;
output;
end;
run;
Eine Sortierung wäre dann noch zu machen, aber grundsätzlich wird jeder Datensatz anhand seines Jahres in die zurückliegenden und kommenden Windows "einsortiert", bzw. dafür vervielfältigt.
Anschließend solltest Du Dein Proc Rec ausführen könnnen. In der Hinsicht kenne ich mich allerdings weniger gut aus.
Um die doppelten Einträge zu vermeiden, kannst Du natürlich auch dynamisch Spalten erzeugen mit einer Kennung, ob ein Satz in ein bestimmtes Intervall fällt. Je nach Anzahl der Intervalle wird das DataSet dann allerdings schnell breit und unperformant. zudem weiß ich nicht, wie sich dann ein Proc Rec ausführen ließe.
Beste Grüße
Michael
... View more