Fehler in Schleife

Fragen zu Stata Syntax und Do-Files.

Fehler in Schleife

Beitragvon Julia_Stata » Mi 20. Feb 2013, 15:55

Liebe Leute,

mein Datensatz hat als folgende Variablen:
hhidcode (1 bis 3000) welcher einzelne Haushalte beschreibt und idcodes (je 1 bis max 46), der jedem Haushaltsmitglied eine Nummer zuordnet (letztlich i=31000+). Als eine weitere Variable ist bei mir das Arbeitsangebot (in Stunden) jedes einzelnen Mitglieds aufgelistet. Nun möchte ich das Arbeitsangebot der einzelnen Haushalte berechnen, sprich für jeden Haushalt, das Arbeitsangebot der Mitglieder addieren. (Da ich im Panel arbeite soll dies alles nur für das Jahr 2008 gemacht werden.)
Mein Ansatz sieht bisher folgendermaßen aus, läuft aber leider nicht so, wie erwartet:


local i=1

gen help1=sum(allwagework) if hhidcode[`i']==hhidcode[`i'+1]& year==2008 //alles aufsummiert für 2008
egen help2=max(help1) if year==2008 //generiert help2 als Summe aller Arbeitsangebotszeiten
gen help3=help2 if help1==help2 // generiert help3 als Variable für Summe Arbeitsangebote nur für den letzten Haushalt (bzw. vorletzte Mitglieder, wenn deren Arbeitsangebot=0)
drop help1
drop help2

while `i'<=31193{

gen help1=sum(allwagework) if hhidcode[`i']==hhidcode[`i'+1]& year==2008
replace help1=. if help1==help3
egen help2=max(help1) if year==2008
replace help3=help2 if help1==help2
drop help1
drop help2
end if foreach i>0 help1=.

}


Gerade wie ich die Schleife richtig beenden kann bin ich mir nicht sicher..
Ich bin dankbar um jeden Tipp!

LG Julia
Julia_Stata
 
Beiträge: 21
Registriert: Sa 3. Nov 2012, 20:40
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Fehler in Schleife

Beitragvon daniel » Mi 20. Feb 2013, 17:27

Ich habe nur ganz grob überflogen, aber

-while- Schleifen sind extrem langsam

explizite Subscripte ([`i']) können sind bei (unbalacierten) Panels problematisch sein. Vielleicht ist es besser time series opreratiroen (l. etc.) verwenden

Schleifen- sind für dieses Problem (höchst wahrscheinlich) gar nicht nötig

Mit

-by- Prefix

etwa
Code: Alles auswählen
bys hhidcode year : egen[...]


und eventuell

-reshape-

ist das vermutlich schneller zu lösen.
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

Re: Fehler in Schleife

Beitragvon Toblerone » Do 21. Feb 2013, 15:40

Hallo Julia

Ich kann deinen Code nicht ganz nachvollziehen, aber ich glaube das ist auch gar nicht nötig. Wie daniel schon angetönt hat, sollte dies viel einfacher gehen:

Code: Alles auswählen
by hhidcode, sort: egen newvar=total(allwagework) if year==2008

sollte für jeden Haushalt die Summe von allwagework berechnen.
Toblerone
 
Beiträge: 2
Registriert: Do 21. Feb 2013, 15:31
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Fehler in Schleife

Beitragvon Julia_Stata » So 24. Feb 2013, 14:56

Super, danke- es funktioniert jetzt!!! :)
Julia_Stata
 
Beiträge: 21
Registriert: Sa 3. Nov 2012, 20:40
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