Seite 1 von 1

Aggregation und Schleife

BeitragVerfasst: Di 15. Jan 2013, 15:04
von dan12
Hallo,
ich bin absoluter Anfänger und habe ein Problem mit der Erstellung einer Schleife.
In meinem Datensatz sind die Exporte sämtlicher Exportarten von sämtlichen Ländern über den Zeitraum von 1970 bis 1990 enthalten.

Ich versuche nun die Exporte (value) pro Exportart (commoditycode) für jedes Land (reporteriso3) über den gesamten Zeitraum aufzuaddieren.

Mein kläglicher Versuch:

foreach c in reporteriso3 {
foreach cc in commoditycode {
gen `exp' = sum(cc)
}
}
Vielen Dank für jede Antwort

Re: Aggregation und Schleife

BeitragVerfasst: Di 15. Jan 2013, 16:49
von daniel
Ich weiß nicht genau, wie Deine Daten aussehen (vielleicht kannst Du ein Beispiel erstellen: add-ons-und-ado-files-f20/beispieldatensatze-erzeugen-t232.html), aber ich denke, Du brachst keine Schleife, sondern etwas in der Richtung -by- , oder -egen- mit -total()-Option.

Etwas in der Art:

Code: Alles auswählen
bys reporteriso3 commoditycode : g foo = sum(value)


Dennoch ein Kommentar zu Deiner Schleife

Code: Alles auswählen
foreach c in reporteriso3 {
foreach cc in commoditycode {
gen `exp' = sum(cc)
}
}


Du definierst zwei locals <c> und <cc> greifst aber in der Schleife auf das undefinierte local <exp> zu. Die locals <c> und <cc> sind zudem falsch definiert. Um eine Idee davon zu bekommen, wie Schleifen in Stata funktionieren copypaste mal dieses Beispiel

Code: Alles auswählen
foreach x in foo bar {
    di "`x'"
    di "x"
}

Re: Aggregation und Schleife

BeitragVerfasst: Do 7. Feb 2013, 18:49
von dan12
Danke für die ausführliche Erklärung.
Der bysort-Befehl war genau das, was ich gesucht habe.