Hallo allerseits,
ich habe eine Frage zum LOOP-Befehl: Kann ich in diesen den Variablennamen mit einbeziehen?
Ich habe in meinem Datensatz u.a. 84 numerische Variablen, die sich im Namen durch die Zahl unterscheiden und Auskunft geben, an welcher Stelle eines Werbeblocks ein Spot gelaufen ist. Sie lauten K_Spot1_Position, K_Spot2_Position, K_Spot3_Position, ... K_Spot84_Position. Ferner gibt es in jeder Zeile die numerische Variable Spotanzahl.
Nun möchte ich für alle 84 Variablen zuordnen, in welchem Drittel des Werbeblocks der Spot gelaufen ist (vorne vs. Mitte vs. hinten). Hierzu berechne ich mit einer IF-Bedingung eine neue Variable, die jeweils K_Spot(x)_Position durch Spotanzahl dividiert und abh. vom Ergebnis in eine neue Variable entweder 1, 2 oder 3 schreibt. Die neuen Variablen heißen entsprechend der Spotbezeichnung bzw. der darin verwendeten Nummer "Spot(x)_Drittel", also z.B. bei K_Spot1_Position --> Spot1_Drittel, bei K_Spot2_Position --> Spot2_Drittel bis hin zu K_Spot84_Position --> Spot84_Drittel.
Worauf ich hinaus will, sieht man am besten an der (nicht funktionierenden) Syntax. Ich habe es mit einem LOOP-Befehl versucht, aber nicht hinbekommen. Kann ich darin irgendwie auf den Variablennamen verweisen und hochzählen, oder geht das generell nicht? Müsste ich stattdessen einen Vektor benennen? Die Variablen stehen leider nicht alle hintereinander.
Mein Syntaxversuch sieht so aus:
LOOP #i=1 TO 84.
DO IF (K_Spot#i_Position / Spotanzahl) <= 0.3333.
COMPUTE Spot#i_Drittel = 1.
ELSE IF ((K_Spot#i_Position / Spotanzahl) > 0.3333) & ((K_Spot#i_Position / Spotanzahl) <= 0.6666).
COMPUTE Spot#i_Drittel = 2.
ELSE.
COMPUTE Spot#i_Drittel = 3.
END IF.
END LOOP.
EXECUTE.
SPSS (19) bricht mit folgender Meldung ab:
"LOOP #i=1 TO 84.
DO IF (K_Spot#i_Position / Spotanzahl) <= 0.3333.
>Fehler Nr. 4285 in Spalte 8. Text: K_Spot#i_Position
>Ungültiger Variablenname. Der Name besteht aus mehr als 64 Zeichen oder wurde
>in keinem früheren Befehl definiert.
>Die Ausführung dieses Befehls wurde unterbrochen.
COMPUTE Spot#i_Drittel = 1.
ELSE IF ((K_Spot#i_Position / Spotanzahl) > 0.3333) & ((K_Spot#i_Position / Spotanzahl) <= 0.6666)."
Besten Dank für Hilfe und LG,
Regina