Benutzung des Recode-Befehls im Sinne einer  IF-THEN-ELSE-Anweisung

 

 

Die Recode-Funktion von PS-Explore kann unter Einbeziehung der logischen Funktionen EQ (=), NE (<>), GT (>), GE (>=), LT (<) und LE (<=) als IF-THEN-ELSE-Anweisung mit mehreren ELSE-Verzweigungen  benutzt werden.

 

Nachstehend eine Tabelle mit 2 Variablen (Var1 und Var2), die in einer logischen Bedingung benutzt werden. Eine weitere Variable (Var3) wird für eine zugeordnete Rechenoperation benutzt. Der Inhalt wird einer vierten Variablen (Var4) zugewiesen.

 

 

 

Die Aufgabe lautet:

 

 

                   wenn          Var1 = 1    und   Var2 = 0,             dann setze                   Var4 = Var3

wenn          Var1 = 1    und   Var2 = 1,             dann setze                   Var4 = Var3*2

                   wenn          Var1 = 0    und   Var2 = 0,             dann setze                   Var4 = Var3*3

                   wenn          Var1 = 0    und   Var2 = 1,             dann setze                   Var4 = Var3*4

 

In PS-Explore-Notation lautet der Befehl wie in nachstehendem Bild gezeigt:

 

 

 

Der Recode-Befehl erhält als ersten Funktionsparameter den Wert 1 (=logisch wahr). Die zweiten bis fünften Parameter enthalten sowohl die logischen Bedingungen, z.B. „eq(var1,0)&eq(var2,1)“, als auch die bei Zutreffen der Bedingung durchzuführenden Berechnungen (z.B. var3*4).

 

Logische Bedingung und Rechenoperation werden durch Gleichheitszeichen getrennt, die Bedingung steht links des Gleichheitszeichens, die Berechnung rechts.

 

Der Befehl

 

var4 = recode(1, eq(var1,1)&eq(var2,0)=var3,

                            eq(var1,1)&eq(var2,1)=var3*2,

                            eq(var1,0)&eq(var2,0)=var3*3,

                            eq(var1,0)&eq(var2,1)=var3*4)

 

lautet umgangssprachlich formuliert dann etwa:

 

„Überprüfe, welche der vier insgesamt möglichen 01-Kombinationen bei Var1 und Var2 vorliegen. Nehme sodann die Rechenoperation, die der zutreffenden Bedingung durch Gleichheitszeichen zugeordnet ist und Berechne das Ergebnis. Sodann lege das Ergebnis der Berechnung auf Var4 ab“.

 

Beispiel: Ist Var1=0 UND Var2=0 ( „eq(var1,0)&eq(var2,0)“ ), dann rechne Var3*3 ( 500*3). Das Ergebnis (1500) wird in der Var4 zugehörigen Spalte abgelegt.

 

In nachstehendem Beispiel werden alle vier 01-Kombinationen einmal durchgerechnet:

 

 

 

 

Anmerkungen:

 

1.    Statt 1 (wahr) als erstem Parameter kann auch 0 (=falsch) benutzt werden. Dann gilt alles oben Gesagte

genau umgekehrt, d.h. die zugeordnete Rechenoperation wird ausgeführt, wenn eine Bedingung falsch ist.

 

     2. Die logischen Bedingungen des Recode-Befehls sollten so formuliert sein, dass, wenn der erste Parameter

         1 gesetzt ist, genau eine Bedingung zutrifft, also wahr wird. Treffen mehrere Bedingungen zu, so wird

diejenige Rechenoperation ausgeführt, die von links her gesehen, als erste wahr ist. Trifft gar keine

Bedingung zu, so wird dem Ergebnisfeld (hier Var4) ein Fehlwert „-“ zugewiesen.

 

3.    Zusätzlich zur Benutzung der Recode-Funktion im Rechne-Befehl der Makrosprache von PS-Explore kann

RECODE auch als Formel eines Datenfeldes in Datenerfassungsmasken benutzt werden.

 

4.    Das obige Beispiel wurde aus Gründen der intuitiven Nachvollziehbarkeit möglichst einfach gewählt. Die

Komplexität der Ausdrücke links und rechts des Gleichheitszeichens eines Recode-Argumentes ist praktisch

nicht beschränkt. Es können alle Variablen/Felder eines Arbeitsblattes oder einer Datenmaske benutzt werden.

 

5.    Die logischen Funktionen (EQ, NE, GT, GE, LT, LE) können als 2. Argument auch Formeln enthalten:

z.B. „eq(var1,sqr(Var3)+2)&eq(var2,0)=sqrt(var3)+2“