Syntax Fragen

Fragen zu Stata Syntax und Do-Files.

Syntax Fragen

Beitragvon Sebastian28 » Do 7. Mär 2013, 12:08

Moin,

hätte noch zwei Fragen, da ich mit einem .do -file meines Vorgängers arbeiten muss, und sowieso noch nicht so gewandt bin mit stata, ist es schwierig alles nach zu vollziehen was er gemacht hat.
distinct fundid if !mi(des_alpsw_07) & strategy1==1 & dates==39325 & existalphabefore_07== 1
für was genau steht "!mi" ? könnte jemand kurz den syntax erläutern? :oops:

Zweitens versuche ich eine Variable zu codieren, welche 1 wird falls zwischen bestimmten daten aufgehört wurde zu reporten.

Ein Beispiel sieht man im Screenshot unten.
Der (falsche) code dazu ist: gen dropin_aug07mar09=cond(existbefore_aug07mar09==1 & dates>=39294 & dates<39903,1,0)
Nun, leider bekomm ich nicht das was ich brauche. Ich brauche nur eine 1 bei dropin_aug07mar09 falls der vorher existiert hat (also existbefore_aug07mar09==1) und 39294 - 399903 einträge ABER danach keine mehr. Also mathematisch: "only if dates<39903" - aber wie macht man so was in stata?

Verzweifle bald mal :x

Vielen Dank!!
Dateianhänge
Bildschirmfoto 2013-03-07 um 10.47.18.png
Bildschirmfoto 2013-03-07 um 10.47.18.png (41.55 KiB) 2833-mal betrachtet
Sebastian28
 
Beiträge: 7
Registriert: Mi 6. Mär 2013, 17:08
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Syntax Fragen

Beitragvon daniel » Do 7. Mär 2013, 18:46

für was genau steht "!mi" ?


-help mi()-
-help operators-

Nun, leider bekomm ich nicht das was ich brauche. Ich brauche nur eine 1 bei dropin_aug07mar09 falls der vorher existiert hat (also existbefore_aug07mar09==1) und 39294 - 399903 einträge ABER danach keine mehr. Also mathematisch: "only if dates<39903" - aber wie macht man so was in stata?


Ich verstehe nicht, was Du hier willst. Ich sehe nach dem date 39903 nur Nullen
ABER danach keine [1] mehr.


Wo liegt das Problem?
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: Syntax Fragen

Beitragvon Sebastian28 » Fr 8. Mär 2013, 11:44

hallo daniel,

danke für deine antwort.

das problem ist, dass es keine 1 geben soll bei dropin.. falls bei fundid über das datum 39903 hinaus werte existieren, d.h. konkret: der fund ist gar nicht verschwunden in der zeitperiode, weshalb er eben keine 1 haben darf.

Ideen?

Danke :)
Sebastian28
 
Beiträge: 7
Registriert: Mi 6. Mär 2013, 17:08
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Syntax Fragen

Beitragvon daniel » Fr 8. Mär 2013, 12:59

das problem ist, dass es keine 1 geben soll bei dropin.. falls bei fundid über das datum 39903 hinaus werte existieren, d.h. konkret: der fund ist gar nicht verschwunden in der zeitperiode, weshalb er eben keine 1 haben darf.


Verstehe ich immer noch nicht. In Deinem kleinen Bildchen gibt es de facto (und wie von Dir gewünscht) keine 1 in driopin, über das date 39903 hinaus. Bai allen größeren dates (i.e. 39933, 39964 und 39994) steht ein 0 -- keine(!) 1.

Edit:

Oder willst Du, dass alle Zielen der jeweiligen fundid auf Null gesetzt werden, falls diese fundid länger als bis 39903 beobachtet wurde? In dem Fall

Code: Alles auswählen
bys fundid : g byte dropin = (date[_N] < 39903)
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: Syntax Fragen

Beitragvon Sebastian28 » Di 12. Mär 2013, 11:35

vielen dank, es generiert was in die richtige richtung.. versteh den command jedoch nicht nicht ganz :/
Sebastian28
 
Beiträge: 7
Registriert: Mi 6. Mär 2013, 17:08
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Syntax Fragen

Beitragvon daniel » Di 12. Mär 2013, 12:14

Was heißt "etwas in die Richtung"? Ich kann leider keine bessere Hilfe anbieten, wenn Du nicht exakt sagen kannst, was Du eigentlich willst.

Der code sollte wohl besser noch

Code: Alles auswählen
bys fundid (date) : g byte dropin = (date[_N] < 39903)


lauten.

Erklärung. Beginnend nach dem Doppelpunkt, wird eine Variable, dropin, generiert, die den Wert 1 erhält, falls in der letzten Beobachtung der Wert der Variable date kleiner ist als 39903, 0 sonst -- exakt wie von Dir gewünscht. Das -by- Prefix sorgt dafür, dass die letzte Beobachtung (_N) nicht die letzte im gesamten Datensatz ist, sondern die jeweils letzte pro fundid. Die Variable dates wird beim Prefix in Klammern gesetzt, weil die Sortierung des Datensatzes innerhalb jeder fundid nach dem Datum geschehen soll, um sicher zu stellen, dass die jeweils letzte Beobachtung auch wirklich das größte Datum enthält.
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 2 Gäste

cron