Von SPSS nach R - die DO REPEAT Anweisung

Spss DO REPEAT versus R Lookup Tabelle


Zunächst muss abgeklärt werden, was die Spss DO REPEAT Anweisung eigentlich macht.

Mit der Spss DO REPEAT-Anweisung kann der Schreibaufwand für Formeln in Spss reduziert werden. Die DO REPEAT-Anweisung kann aber auch als Lookup-Tabelle genutzt werden. In diesem Fall sind jedoch IF/ELSE-Anweisungen und mehrere Schleifendurchläufe erforderlich, um die gewünschte Kategorie zu lokalisieren.

Das Beispiel behandelt die Spss DO REPEAT-Anweisung, wenn diese als Lookup-Tabelle genutzt wird.

Spss-Code Fragment

Durch die DO REPEAT-Anweisung werden folgende Variablen (Kategorie, Faktor) in den einzelnen Schleifendurchläufe abgearbeitet:

  • Schleife-1: Kategorie = ‘A’ und Faktor = 10
  • Schleife-2: Kategorie = ‘B’ und Faktor = 20
  • Schleife-3: Kategorie = ‘C’ und Faktor = 30

Stimmt der Wert der Variablen Gruppe mit dem Wert für der Variablen Kategorie überein, dann erfolgt die Berechnung der Variablen Result mit dem der Kategorie zugeordneten Faktor. Ist der Wert für die Variable Gruppe = ‘B’, dann wird der Variablen Faktor der Wert 20 zugeordnet.

R Lookup Tabelle

In R würde man diese Verwendung der DO REPEAT-Anweisung durch eine Lookup-Tabelle ersetzen. Dies hätte den zusätzlichen Vorteil, dass keine IF/ELSE Anweisung zur Synchronisierung erforderlich ist und damit auch keine Schleifendurchläufe. Der dadurch erreichte Perfomancegewinn wird erst bei großen Datenmengen sichtbar.

R Lookup-Tabelle Variante 1

Kategorie <- c("A" = 10, "B" = 20, "C" = 30)

Diese Variante ist interessant, wenn die Lookup-Tabelle aus wenigen Schlüsselwörtern besteht und von Hand eingegeben wird.

R Lookup-Tabelle Variante 2

Keys <- c("A", "B", "C")
Kategorie <- c(10, 20, 30)
names(Kategorie) <- Keys

Diese Variante ist günstiger für durch Computer generierten Code. Z. B. wenn Sie die Code-Erstellung in einer Funktion hinterlegen.

Anwendung der Lookup-Tabelle

Mit Hilfe der Lookup-Tabelle kann man nun den Faktor direkt auslesen.

Gruppe <- "A"
Faktor <- Kategorie[Gruppe]

Die Kategorie ist eine Vektor mit den Werten 10, 20 und 30 an den Positionen 1, 2 und 3. Werden den einzelnen Postionen Namen zugeordnet können die Werte an den Positionen auch über den Namen angesprochen werden.Damit muss man sich den Index (Position) nicht merken.

  • Kategorie[1] und
  • Kategorie[“A”]

verweisen auf die selbe Position mit dem Wert 10. Durch den Namenszuordnung erhält man eine einfache Lookup-Tabelle.

Beispiele

Faktor <- Kategorie["B"]
Faktor
##  B 
## 20

Will man auch den Namen entfernen, benötig man zusätzlich die R-Funktion unname().

Faktor <- unname(Kategorie["B"])
Faktor
## [1] 20

Finale Umsetzung

Zum besseren Vergleich werden beide Lösungen dargestellt.

Umsetzung mit Spss

Umsetzung mit R

Test <- 5
Gruppe <- "C"
Kategorie <- c("A" = 10, "B" = 20, "C" = 30)
Result = Test * Kategorie[Gruppe]

Dieser Code liest den Faktor direkt aus. Damit kann das Ergebnis unmittelbar berechnet werden.

Es sind keine IF/ELSE Anweisungen und auch keine weiteren Schleifendurchläufe nötig.

Ergebnischeck

Result
##   C 
## 150


Wichtiger Hinweis

Wenn auch Sie Fragen zur Anwendung von R haben, können Sie mich gerne kontaktieren. Soweit es meine Zeit erlaubt, werde ich Ihnen gerne antworten oder zumindest Tipps bzw. Hinweise zu Ihrem Problem geben. Dieses Angebot ist kostenlos und unverbindlich. Ihre Anfragen werden vertraulich behandelt und Daten nicht an Dritte weitergegeben.

Fragen die von allgemeinem Interesses sind werde ich zusätzlich in meinen Beiträgen behandeln - jedoch mit anderer Fragestellung und simulierten Daten.

Diese Website benutzt Cookies, um Ihnen das beste Erlebnis zu ermöglichen. Weiterführende Informationen erhalten Sie in unserer Datenschutzerklärung.