Bedingung

Aus SAS-Wiki
Wechseln zu: Navigation, Suche

In SAS kann eine Bedingung ein Vergleich, ein Boolescher Ausdruck (unter Verwendung der logischen Operatoren NOT, AND, OR), ein Funktionsergebnis, eine Ausprägung einer (numerischen) Variable oder eine beliebige Kombination davon sein.

Das Ergebnis einer Bedingung ist entweder Wahr (true) oder Falsch (false) und wird als numerischer Wert 1 oder 0 dargestellt.

Umgekehrt führen der numerische Wert 0 wie auch der Spezialwert „Missing Value“ als Bedingungsausdruck zum Ergebnis Falsch. Jeder andere numerische Wert – also jede positive und negative Zahl – führt zum Ergebnis Wahr.

Beispiele

Vergleiche Bedeutung
sex="M"
sex EQ "M"
sex=""
age=14
age=.
gleich
sex^="M"
sex NE "M"
age^=.
ungleich
datum<"01may2000"D
gebdatum LT "01may2000"D
kleiner als
uhrzeit>="20:15"T
uhrzeit GE "20:15"T
größer oder gleich
name=:"St" beginnt mit
äquivalent zu SUBSTR(name,1,2)="St"
name>=:"L" beginnt mit oder ist größer als
beginnt mit 'L' oder einem Großbuchstaben nach 'L'
Boolesche Ausdrücke Bedeutung
sex="M" AND age>14
10<=age<14
10<=age AND age<14
beide Bedingungen müssen erfüllt sein
sex="M" OR age>14
age=10 OR age=12
age IN (10 12)
mindestens eine der Bedingungen muss erfüllt sein
(sex="M" OR sex="F") AND age>14 Klammerausdruck hat Vorrang vor AND. Sonst gilt AND vor OR.
NOT (sex="M" AND age>14) Klammerausdruck hat Vorrang vor NOT. Sonst gilt NOT vor AND.
Funktionsergebnis Bedeutung
INDEX(adresse,"@") enthält das Zeichen '@' sonst liefert INDEX den Wert 0
MISSING(name) findet Missing Value bei numerischen und alphanumerischen Variablen
MOD(_N_,2) alle ungeradzahligen Beobachtungen
äquivalent zu: MOD(_N_,2) NOT IN (. 0)
Numerische Variable Bedeutung
age alle Beobachtungen, bei denen die num. Variable 'age' weder 0 noch missing value enthält
äquivalent zu: age NOT IN (. 0)
Achtung: alphanumerische Variablen können zu unerwarteten Ergebnissen führen.
age AND weight alle Beobachtungen, bei denen in den num. Variablen 'age' und 'weight' reale (ohne 0 und missing value) Werte vorliegen
FIRST.sex erste Beobachtung beim Wechsel der By-Gruppe für die Variable 'sex'
Siehe By-Gruppen Verarbeitung
Kombinierte Bedingung
weight*0.453592370>40 AND UPCASE(name)=:"J"

Boolesche Variablen

Auch wenn SAS den Datentyp 'Boolean' nicht kennt, können alle numerischen Variablen, die nur die Ausprägungen 0 und 1 besitzen als Boolesche Variablen angesehen werden. Beispiele sind im Datenschritt die temporären Variablen _ERROR_, FIRST- und LAST-Variablen, IN-Variablen.

Boolesche Variablen entstehen, wenn einer Variable eine Bedingung zugewiesen wird. Beispiel:

kind=age<14; /* äquivalent zu IF age<14 THEN kind=1; ELSE kind=0; */
Anwendungsbeispiele Boolescher Variablen Bedeutung
summe=(x1=0) + (x2=0) + (x3=0); Zählen von Ereignissen z.B. wie viele der Variablen x1-x3 haben den Wert 0?
score=(alter=>45) + 2*(raucher="ja") + 3*(bmi>25); Score-Punkte mit Gewichtung bestimmter Ereignisse
positiv_summe=(x1>0)*x1 + (x2>0)*x2; Summe der positiven Werte von x1 und x2
a=1; b=0;
x=NOT a OR NOT b;
Wahrheitswerte ermitteln x=1
x=NOT(NOT(x)); Numerischen Wert in einen Booleschen Wert umwandeln

Siehe auch

Weblinks