Summe mit 2 Bedingungen bilden

Fragen zu Stata Syntax und Do-Files.

Summe mit 2 Bedingungen bilden

Beitragvon chipthief_58 » Mo 27. Mai 2013, 18:38

Hallo liebe Stata-Gemeinde,

als absoluter Anfänger stehe ich leider vor einer für mich nicht lösbaren Aufgabe.

Ich habe einen Datensatz der eine Kennung (cusip) enthält, diese habe ich bereits in eine numerische Variable (cusip_index) umgewandelt. Der Index gibt nun eine Zahl von 1-1516 für eine einzelne cusip an.

cusip trd_exctn_dt rptd_pr vol pricevol cusip_index cusip_index(numerisch)
00209AAG 02jan2004 116.277 20000 2325540 00209AAG 7
002824AH 02jan2004 110.3 158000 1.74e+07 002824AH 9
002824AH 02jan2004 110.02 25000 2750500 002824AH 9
002824AH 02jan2004 109.875 25000 2746875 002824AH 9
002824AK 02jan2004 106.762 10000 1067620 002824AK 11
002824AK 02jan2004 106.125 10000 1061250 002824AK 11
002824AL 02jan2004 100.995 25000 2524875 002824AL 12
002824AL 02jan2004 101.893 174000 1.77e+07 002824AL 12
002824AL 02jan2004 101.849 100000 1.02e+07 002824AL 12
002824AM 02jan2004 106.874227 2000 213748.5 002824AM 13

Ich brauche nun einen Code, der mir als Ergebnis eine neue Variable mit der Summe von pricevol ausgibt, wenn trd_exctn_dt der 02 Jan 2004 ist und cusip index =7 ist.
Dann wieder eine Summe wenn trd_exctn_dt der 02 Jan 2004 ist und cusip_index = 9 usw...

Dieser Code muss vom 02 Jan 2004 bis zum 28 Sep 2012 (16072-19264) laufen und mir jeweils für jeden dieser Tage die Summe von pricevol ausgeben für jede cusip_index (1-1516), die an diesem Tag vorkommt.

Ich hoffe ich habe mich verständllich ausgedrückt und es kann mir jemand helfen.
Meine bisherigen Versuche laufen darauf hinaus, dass eine Variable erzeugt wird, die mir jedoch nur für einen Tag und eine cusip die Summe ausgibt:

forvalues i=16314/19264{
2. forvalues j=1/1516{
3. sum(pricevol) if (trd_exctn_dt==`i' & cusip_index==`j')
4. }
5. }


Für Hilfe wäre ich sehr dankbar.
chipthief_58
 
Beiträge: 5
Registriert: Mo 27. Mai 2013, 17:40
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Summe mit 2 Bedingungen bilden

Beitragvon chipthief_58 » Mo 27. Mai 2013, 19:02

mkxmpl cusip trd_exctn_dt rptd_pr vol pricevol cusip_index in 1/10

inp str8 cusip long trd_exctn_dt double rptd_pr double vol float pricevol long cusip_index
"00209AAG" 16072 116.277 20000 2325540 7
"002824AH" 16072 110.3 158000 17427400 9
"002824AH" 16072 110.02 25000 2750500 9
"002824AH" 16072 109.875 25000 2746875 9
"002824AK" 16072 106.762 10000 1067620 11
"002824AK" 16072 106.125 10000 1061250 11
"002824AL" 16072 100.995 25000 2524875 12
"002824AL" 16072 101.893 174000 17729382 12
"002824AL" 16072 101.849 100000 10184900 12
"002824AM" 16072 106.874227 2000 213748.453125 13
end


Habe gerade versucht mit dem Programm von daniel ein Beispiel zu erstellen...
Hat anscheinend nicht so gut funktioniert. Besser krieg ich es nicht hin, sorry.
chipthief_58
 
Beiträge: 5
Registriert: Mo 27. Mai 2013, 17:40
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Summe mit 2 Bedingungen bilden

Beitragvon daniel » Mo 27. Mai 2013, 22:48

Habe gerade versucht mit dem Programm von daniel ein Beispiel zu erstellen...
Hat anscheinend nicht so gut funktioniert.


Was soll daran nicht funktionieren? Ich copypaste den code in ein do-file, lasse ihn laufen und habe einen Beispieldatensatz. Du hättest allerdings alle "überflüssigen" Variablen für das Beispiel aussparen können.

Ich habe einen Datensatz der eine Kennung (cusip) enthält, diese habe ich bereits in eine numerische Variable (cusip_index) umgewandelt.


Wozu?

Leider kann ich Deiner Beschreibung nicht ganz folgen, aber ich bin relativ sicher, dass hier keine Schleife(n) nötig sind. Versuch mal etwas in der Richtung

Code: Alles auswählen
bys trd_exctn_dt cusip : g foo = sum(pricevol)
bys trd_exctn_dt cusip : replace foo = foo[_N]
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: Summe mit 2 Bedingungen bilden

Beitragvon chipthief_58 » Di 28. Mai 2013, 11:30

Danke sehr.

Das hat schon mal super geklappt.

Jetzt hätte ich gerne noch in einer weiteren Spalte nur den maximalen Wert pro cusip und date angezeigt. Also das Maximum der Summe, die nun in jeder Zelle als Beobachtung steht.

Bzw. gibt es eine Möglichkeit die vielen Beobachtungen zu einem Datum und einer cusip zu einer einzelnen Beobachtung zusammenzufassen.

VG
chipthief_58
 
Beiträge: 5
Registriert: Mo 27. Mai 2013, 17:40
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Summe mit 2 Bedingungen bilden

Beitragvon chipthief_58 » Di 28. Mai 2013, 12:13

Ok hat sich schon erledigt :-)
chipthief_58
 
Beiträge: 5
Registriert: Mo 27. Mai 2013, 17: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