Loop funktioniert nicht - warum?

Fragen zu Stata Syntax und Do-Files.

Loop funktioniert nicht - warum?

Beitragvon kasperl » 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?
kasperl
 
Beiträge: 1
Registriert: Fr 4. Jun 2021, 19:33
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Loop funktioniert nicht - warum?

Beitragvon MNJarczok » Do 25. Nov 2021, 11:29

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']"
}
}
MNJarczok
 
Beiträge: 3
Registriert: Do 25. Nov 2021, 11:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Stata Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron