Seite 1 von 1

Loop funktioniert nicht - warum?

BeitragVerfasst: Fr 4. Jun 2021, 19:53
von kasperl
Hallo,

ich bräuchte Hilfe bei folgender Situation.

Es gibt eine Variablenliste, die sich im Namen nur in den 2 abschließenden Ziffern unterscheiden: Variablenname_01, Variablenname_02, Variablenname_03, usw.. Potentiell können das im Datensatz bis zu 30 Variablen werden, je nach Antwortverhalten: D.h. die "höchste" Variable wäre Variablenname_30.

Ich möchte für jede Variable ein Label vergeben, dass diese beiden Ziffern enthält, z.B. "labelvar[01]", "labelvar[02]", "labelvar[03]", ... usw..

Meine Idee war es, dies mittels 2 "locals" und einer Schleife zu lösen:

local a = 0
local b = 1

foreach var in Variablenname_`a'`b' {
label var `var' "labelvar[`a'`b']"
if `b' < 9 local b = `b' + 1
if `b' == 9 local b = 0
if `b' == 0 local a = 2
if `a' ==2 local b=`b'+1
if `b'==9 local a = 3
if `b'>=9 local b = 0
}

Das funktioniert nur die Variable Variablenname01, die mit dem korrekten Label "labelvar[01]" bezeichnet wird. Die Syntax gibt auch keinen Fehler, sondern erfasst die anderen Variablen (Variablenname02 usw.) einfach nicht.

Woran könnte das liegen? Weiß jemand eine bessere Lösung für mein Anliegen?

Re: Loop funktioniert nicht - warum?

BeitragVerfasst: Do 25. Nov 2021, 11:29
von MNJarczok
Ich hätte das mit
Code: Alles auswählen
forvalues
statt mit
Code: Alles auswählen
foreach
versucht:

Code: Alles auswählen
forvalues a= 0(1)3{
forvalues b= 0(1)9{
label var variablenname_`a'`b' "labelvar[`a'`b']"
}
}


wenn es einzelne variablen in der Zahlenkombi nicht gibt kannst du ein
Code: Alles auswählen
capture
vor label stellen. So führt eine Fehlermeldungen nicht zum stoppen der Schleifen.

Code: Alles auswählen
forvalues a= 0(1)3{
forvalues b= 0(1)9{
cap label var variablenname_`a'`b' "labelvar[`a'`b']"
}
}