Tabellenoption SORT

<< Click to Display Table of Contents >>

Navigation:  Datenauswertung > Sortierung >

Tabellenoption SORT

Die Ausprägungen von Variablen auf der X- bzw. Y-Achse können gezielt sortiert werden. Hierzu dient die Tabellenoption SORT:

Es stehen verschiedene Sortierkriterien zur Verfügung.

Datenwerte können auf- oder absteigend sortiert werden.

Sortierbasis kann die Randverteilung oder eine ausgewählte andere Datenreihe sein.

Die sortierte Tabellenausgabe kann auf Teile der Verteilung beschränkt werden.

Im Zuge der Sortierung können nur spezifische Datenbereiche angefordert und die Tabelle über mehrere Tabellenseiten verteilt werden.

Für Sortierungen nach Rang gilt eine Spezialregel.

SORT kann im Zuge des TABLE-Statements nur einzelnen Variablen zugewiesen werden. Mit dem TABLEFORMAT GLOBALSORT kann die Sortierung auf die gesamte Tabelle ausgedehnt werden.


Sort

Für die gewünschte Sortierung der Variablenausprägungen innerhalb einer Kreuztabelle wird im TABLE-Statement nach dem Variablennamen das Keyword SORT geschrieben, gefolgt vom Sortierkriterium.

Sortierkriterien

Als Sortierkriterien existieren:

ABSOLUTE

nach absoluter Zellenbesetzung

MEAN

nach dem arithmetischen Mittel

SUM

nach der Zellensumme

VALUE

nach dem numerischen Wert (Code)

ALPHA

nach dem Labeltext

COLMEANRANK

nach dem Rangplatz des Mittelwerts in der Spalte, kleinster Wert = Rang 1

COLMEANINVRANK

nach dem Rangplatz des Mittelwerts in der Spalte, größter Wert = Rang 1

COLPERCENTRANK

nach dem Rangplatz des Prozentwerts in der Spalte, kleinster Wert = Rang 1

COLPERCENTINVRANK

nach dem Rangplatz des Prozentwerts in der Spalte, größter Wert = Rang 1

Nach ABSOLUTE, VALUE oder ALPHA kann man immer sortieren; nach SUM und MEAN nur, wenn es die Datenlage erlaubt, d.h. die Zelle muss eine Summe enthalten.

Descend

Voreingestellt ist eine aufsteigende Sortierung (ASCEND).

Soll absteigend sortiert werden, so kann man im Anschluss an das Sortierkriterium das Keyword DESCEND schreiben.

Beispiel:

TABLE = a BY b SORT ABSOLUTE DESCEND; 

Pane und Code

SORT sortiert im Standardfall nach der Randverteilung (bzw. Gesamtverteilung) des ersten Elements des Kopfes.

Durch das Schlüsselwort PANE kann die Sortierungsbasis einer anderen Spalte als der Radverteilung der ersten Kreuzvariablen entnommen werden, im folgenden Fall z.B. dem Mittelwert der Variable b im zweiten Element des Kopfes:

TABLE = a MEAN( b ) BY c SORT MEAN PANE 2 CODE 1; 

Durch das Schlüsselwort CODE kann man die Sortierung auf Einzelspalten mit abweichenden Codes spezifizieren. Nach PANE ist die Angabe von CODE obligatorisch. Bei einzelnen Spalten/Zeilen mit MEAN etc. ist die Information immer in der Spalte unter dem (synthetischen) Code 1 zu finden; deshalb steht oben im Beispiel 'CODE 1'.

Bei Prozent- oder Absolutspalten kann man auch nach der Verteilung unter spezifischen Codes sortieren, z.B. nach der Spalte mit dem Code 2 der Kopfvariablen a:

TABLE = a MEAN( b ) BY c SORT ABSOLUTE PANE 1 CODE 2; 

Diese (flexiblere) Lösung ersetzt die ältere GESStabs-Sortierung, nach der nicht sichtbaren impliziten Gesamtverteilung.

Top, Bottom und Extreme

Im Zusammenhang mit SORT kann man die Ausgabe auf Teile der Verteilung beschränken; es können entweder der obere Teil (TOP), der untere Teil (BOTTOM) oder die beiden Enden der Verteilung (EXTREME) selektiert werden.

Beispiele:

TABLE = a MEAN( b ) BY c SORT MEAN PANE 2 EXTREME 20; 

// jeweils 20 von jedem Ende der Verteilung

TABLE = a BY c SORT ABSOLUTE TOP 80; 

// die obersten 80

Range, Slice und LSlice

Außerdem kann man beliebige Bereiche mit dem Schlüsselwort RANGE anfordern und so eine Tabelle mit sehr vielen Ausprägungen zerlegen:

TABLE = a BY b SORT ABSOLUTE DESCEND RANGE 1 20; 

Ähnlich wie RANGE funktioniert SLICE: Damit kann man eine Tabelle in der Y-Richtung in die erforderliche Anzahl von Einzeltabellen zerlegen. Angegeben wird die gewünschte Zahl der Datenzeilen je Seite, z.B.:

TABLE = a BY b SORT ABSOLUTE DESCEND SLICE 15; 

Hiermit wird eine Tabelle mit z.B. 55 Einzelitems in der Variablen b in vier Seiten zerlegt. Falls eine Zerlegung eine Restseite mit nur einer Nennung ergeben würde, wird diese Nennung mit auf die Vorseite gedruckt. Eine Tabelle mit 61 Items würde also auf 4 und nicht auf 5 Seiten gedruckt.

Eine zusätzliche (nachgestellte) TOP-Angabe ermöglicht die Begrenzung auf die ersten n (im Beispiel 30) zu druckenden Ausprägungen:

TABLE = a BY b SORT ABSOLUTE DESCEND SLICE 15 TOP 30; 

Mit LSLICE (kurz für LineSLICE) kann man eine Zerlegung einer langen Tabelle nach jeweils n Labelzeilen verlangen. Dies führt zu einem ausgeglicheneren Druckbild bei Tabellen mit stark variierenden Labellängen. z.B.:

TABLE = a BY b SORT ABSOLUTE DESCEND LSLICE 30; 

Spezialregel für Sortierungen nach Rängen

Werte, die nach der Anwendung der Rundung anhand DECIMALS, z.B. eine Nachkommastelle, identisch sind, bekommen unter Angabe der Sortierkriterien COLMEANRANK, COLMEANINVRANK, COLPERCENTRANK oder COLPERCENTINVRANK alle denselben Rang -- mit der logischen Folge, dass mehrere Werte denselben Rang (z.B. Rang 3) einnehmen können. In diesem Fall werden die Zeilen in der Ausgabe immer anhand der Labeltexte alphabetisch aufsteigend sortiert.


GlobalSort

Eine Tabellenanweisung mit SORT-Option wie

TABLE = #kopf BY a b SORT ABSOLUTE DESCEND;

sortiert nur innerhalb der Ausprägungen der Variablen b.

Unter Anwendung des TABLEFORMAT GLOBALSORT wird der Wirkungsbereich von SORT auf die gesamte Tabelle ausgedehnt. Dies ist vor allem bei Mittelwerttabellen etc. sinnvoll. Mit

TABLEFORMAT = + GLOBALSORT;

TABLE = #kopf by

MEAN( a ) SORT MEAN

MEAN( b ) SORT MEAN

MEAN( c ) SORT MEAN

......

......

;

wird die gesamte Tabelle nach dem Mittelwert sortiert. Aus technischen Gründen muss das 'SORT MEAN' hinter jedem 'MEAN( ... )' wiederholt werden.

Wenn ein bestimmter Mittelwert abweichend von der Sortierung immer am Ende ausgegeben werden soll, dann kann man dem betreffenden MEAN ( bzw. anderem CELLELEMENT) die Eigenschaft BOTTOM verpassen. Will man z.B. immer v10 am Ende sehen, dann ginge das so:

#macro #m( &1 )

MEAN ( V&1 ) SORT MEAN DESCEND

#endmacro

TABLEFORMAT = +GLOBALSORT;

TABLE = geschlecht BY

MEAN :BOTTOM ( V10 ) SORT MEAN DESCEND

#domacro( m 1:9 )

;

Von dieser Technik für Übersichtstabellen wird jedoch eher abgeraten. Generell gibt es für Tabellen dieses Typs inzwischen mit OVERVIEW bzw. XOVERVIEW eine elegantere Lösung.