Schleifen und Time-Series

Fragen zu Stata Syntax und Do-Files.

Schleifen und Time-Series

Beitragvon Adan.Ri » Do 24. Nov 2011, 01:25

Hi,

Ich habe folgendes Problem und stehe grad ziemlich auf dem Schlauch.

Ich möchte einige Variablen welche auf Zahlen enden umcodieren und diese als neue Variablen speichern.
Das ganze soll (Aufgabe von der Uni aus) über eine Schleife geschehen.
Die Endzahlen der Ursprungsvariablen sind jedoch nicht durchgehend von 1-x sondern es fehlen einige.

Ursprünglich siehtes also so aus:

recode xx01 (1=4) (2=3) (3=2) (4=1) (9=.) (nonm=.), generate(yy1)
recode xx02 (1=4) (2=3) (3=2) (4=1) (9=.) (nonm=.), generate(yy2)
recode xx03 (1=4) (2=3) (3=2) (4=1) (9=.) (nonm=.), generate(yy3)
recode xx05 (1=4) (2=3) (3=2) (4=1) (9=.) (nonm=.), generate(yy4)
recode xx07 (1=4) (2=3) (3=2) (4=1) (9=.) (nonm=.), generate(yy5)
recode xx08 (1=4) (2=3) (3=2) (4=1) (9=.) (nonm=.), generate(yy6)

Meine Überlegung in Hinsicht auf die Schleife war nun folgende:

foreach var of varlist xx01 xx02 xx03 xx05 xx07 xx08 {
local i=1/6
recode `var' (1=1) (2=2) (3=3) (4=4) (9=.) (nonm=.), generate(yy`i')
}

Natürlich scheitert die Überlegung am local "i", da er anstatt einer Zahlenreihe die neue Datei yy0,1666666 nennt.
Meine Frage(n) ist/sind nun: Wie kann ich das Problem lösen? Gibt es eine möglichkeit eine Time-Series wie 1 - 6 als local zu erstellen oder muss ich komplett umdenken?


MfG,
Adan
Adan.Ri
 
Beiträge: 1
Registriert: Do 24. Nov 2011, 01:09
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Schleifen und Time-Series

Beitragvon daniel » Do 24. Nov 2011, 20:58

"Gibt es eine möglichkeit eine Time-Series wie 1 - 6 als local zu erstellen oder muss ich komplett umdenken?"

Zunächst mal ist "1/6" eine Nummernliste (-numlist-) keine Time-Series. Time-series sind Daten, die über einen längeren Zeitraum vorliegen (z.B. Aktienkurse).

Eine Schleife ist hier überflüssig. Die Zeile

Code: Alles auswählen
recode xx01 xx02 xx03 xx05 xx07 xx08 (1 = 4)(2 = 3)(3 = 2)(9 = .)(nonm = .), g(yy1 yy2 yy3 yy4 yy5 yy6)


wäre eine Möglichkeit. Aber Hausaufgaben sind nunmal Hausaufgaben. Wie wäre es mit

Code: Alles auswählen
loc i 0
foreach x in 1 2 3 5 7 8 {
    recode xx0`x' (1 = 4)(2 = 3)(3 = 2)(4 = 1)(9 = .)(nonm = .) ,g(yy`++i')
}


oder

Code: Alles auswählen
forv j = 1/6 {
    loc newvars `newvars' yy`j'
}
recode xx01 xx02 xx03 xx05 xx07 xx08 (1 = 4)(2 = 3)(3 = 2)(9 = .) (nonm = .), g(`newvars')


Edit

Da habe ich doch fast die Frage nach dem Erstellen des local vergessen.

Code: Alles auswählen
numlist "1/6"
local i `r(numlist)'
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17: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 3 Gäste

cron