Loop funktioniert nicht - warum?
Verfasst: Fr 4. Jun 2021, 19:53
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?
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?