Partielles Sortieren in DataSets
Hallo,
für folgendes Problem ist mir noch keine "Standardlösung" bekannt:
Ein Dataset soll blockweise sortiert werden.
Zu einem Block gehören Werte von je &anz. float-Variablen var1--var&anz. innerhalb einer Beobachtung.
Folgendes DataSet soll das verdeutlichen:
DATA beispiel;
DO rep = 1 TO 5;
%LET liste = A B C D;
%DO i = 1 %TO 4;
%LET var = %SCAN(&liste, &i);
%DO j=1 %TO 10;
&var.&j.=ranuni(-1);
%END;
%END;
drop rep;
output;
END;
RUN;
%MEND erzeugen;
%erzeugen;
(Also: Die 10 Werte A1...A10, B1...B10, usw. sollen jede für sich getrennt für jede Beobachtung sortiert werden.)
Vorhandene Lösung 1:
Ich habe mir einen kleinen Makro geschrieben, der die (im konkreten Fall je 31) Werte sortiert.
Das fordert natürlich seine Rechenzeit, da dieser Makro bei 8 Variablenblöcken und 9 Beobachtungen also 72-mal aufgerufen wird .
Ansatz 2:
Eine andere Überlegung wäre die,
a) das Dataset zu transponieren,
b) es in kleine Sets aufzusplitten (--> 1 Spalte je &anz. Beobachtungen),
c) diese mit PROC SORT zu sortieren und
d) die sortierten Sets wieder zusammenzufügen.
(Das erscheint mir nur sinnvoll, wenn es die Anzahl &anz. je gleichartiger Variablenwerte groß ist.)
Gibt es eine Möglichkeit, mit SAS-Standardwerkzeugen jede Variable eines (solchen transponierten) Sets für sich zu sortieren (SQL?)?
Ich bin schon gespannt auf Ihre Ideen.
Gruß
Meinhard Mende
