LOOP-Befehl mit Verweis auf Var.Namen?

Alles rund um SPSS Syntax und Programmierung.

LOOP-Befehl mit Verweis auf Var.Namen?

Beitragvon Regina85 » Mo 16. Apr 2012, 17:49

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
Regina85
 
Beiträge: 7
Registriert: Mo 10. Okt 2011, 10:53
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: LOOP-Befehl mit Verweis auf Var.Namen?

Beitragvon Wolf » Fr 18. Mai 2012, 10:41

Hallo Regina,

Alternativvorschlag: Versuch es mit do repeat. Da kannst Du ein mal alle Variablen aufzählen und dann mit einem "Code" für die Berechnung auf diese Variablenliste zugreifen.

Ein Beispiel ist hier beschrieben:

http://statistik-dresden.de/archives/981

Viele Grüße,

Wolf
Wolf
 
Beiträge: 15
Registriert: Fr 18. Mai 2012, 10:01
Wohnort: Dresden
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu SPSS Syntax

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 8 Gäste