Expertentipp:

Wussten Sie schon, dass Sie mit PROC SORT nach Zahlen am Anfang oder Ende eines Textes sortieren können? Nützlich zum Beispiel für Filenamen, welche in einer Zahl oder Strassennamen, die mit einer Nummer enden.

Und so geht's:

Wir haben folgende Daten:

text_mit_zahl
Rosenacherstr 20
Rosenacherstr 1
Rosenacherstr 30
Rosenacherstr 2
Rosenacherstr 10
Rosenacherstr 3

Wenn diese Daten mit folgendem Programm sortiert werden…

data have;
  infile cards;
  input
    text_mit_zahl $32.
  ;
cards;
Rosenacherstr 20
Rosenacherstr 1
Rosenacherstr 30
Rosenacherstr 2
Rosenacherstr 10
Rosenacherstr 3
;

proc sort
  data=have
  out=want
;
  by text_mit_zahl;
run;

…erhalten wir folgende Tabelle:

text_mit_zahl
Rosenacherstr 1
Rosenacherstr 10
Rosenacherstr 2
Rosenacherstr 20
Rosenacherstr 3
Rosenacherstr 30

Um die Daten entsprechend der Hausnummer zu sortieren, stellt PROC SORT die SORTSEQ= Option zur Verfügung. Mit Hilfe dieser Option können verschiedene Sortierreihenfolgen bestimmt werden.

Für unser Beispiel verwenden wir sortseq=linguistic(numeric_collation=on). Dies bewirkt, dass Zahlen am Anfang oder Ende eines Textes für die Sortierung berücksichtigt werden.

Hier das Programmbeispiel:

data have;
  infile cards;
  input
    text_mit_zahl $32.
  ;
cards;
Rosenacherstr 20
Rosenacherstr 30
Rosenacherstr 1
Rosenacherstr 2
Rosenacherstr 10
Rosenacherstr 3
;

proc sort
  data=have
  out=want2
  sortseq=linguistic(numeric_collation=on)
;
  by text_mit_zahl;
run;

Ergibt die folgende Tabelle:

text_mit_zahl
Rosenacherstr 1
Rosenacherstr 2
Rosenacherstr 3
Rosenacherstr 10
Rosenacherstr 20
Rosenacherstr 30

Weitere Informationen finden Sie in der Dokumentation zu PROC SORT und im Technical Paper Linguistic Collation: Everyone Can Get What They Expect.