if-Bezug auf einzelnen Wert in Paneldaten

Fragen zu Stata Syntax und Do-Files.

if-Bezug auf einzelnen Wert in Paneldaten

Beitragvon FBN22 » Mi 13. Mär 2013, 15:40

Hallo erstmal. Bin neu hier und bin dankbar, Antworten auf die eine oder andere Frage zu kriegen, da ich zum ersten mal vertieft mit stata arbeite und deshalb hin und wieder am rumkämpfen bin...

Eine wahrscheinlich äusserst banale Frage. Ich weiss leider nicht, nach welchen Stichworten ich suchen soll um eine Antwort zu finden..:
Wie muss ich im folgenden Fall bei der Variablengenerierung den if-Befehl formulieren: Variable a soll =1 sein für alle Zeitpunkte von 1960-1970, wenn Kriterium b zu Zeitpunkt 1960=2 ist.

Also in folgender Art:
gen a=1 if year>=1960 & if year <=1970 & if year1960=2

meine Frage bezieht sich auf die Formulierung des letzten Teils...

...ich hoffe das ist verständlich - danke für eure Reaktionen!
FBN22
 
Beiträge: 3
Registriert: Mi 13. Mär 2013, 15:17
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: if-Bezug auf einzelnen Wert in Paneldaten

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

Das ist schwer zu beantworten, kannst Du mal einen Beispieldatensatz erzeugen, an dem zu erkennen ist, was Du hast, und was Du genau willst. Möglicher Weise ist das einfacher in zwei Schritten zu machen.

Ansonsten ist der leichte Tel der Antwort, dass Deine Syntax illegal ist. Der -if- qualifier taucht genau einmalauf. Zudem ist das letzte "=" zeichen eine Zuweisung -- Du willst aber einen logischen Vergleich (i.e. "=="). Statt

Code: Alles auswählen
gen a=1 if year>=1960 & if year <=1970 & if year1960=2


tippe

Code: Alles auswählen
gen a=1 if year>=1960 & year <=1970 year1960 == 2
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: if-Bezug auf einzelnen Wert in Paneldaten

Beitragvon FBN22 » Di 19. Mär 2013, 03:28

Hm, war etwas verworren, du hast recht, das befehlbeispiel war zwar nur sinnbildich gemeint. ich versuchs mal noch so zu erklären:
Ich habe Paneldaten (long), und möchte einen Dummy a generieren, welcher für ausgewählte Jahre=1 ist, wenn eine bestimmte Variable in einem einzelnen bestimmten Jahr ein Kriterium erfüllt.

also eben in der Art
gen a=1 if year>=1960 & year <=1970 plus die zusätzliche Bedingung, dass im year 1960 ein Kriterium (zB >=2) erfüllt ist.

in der Beilage ein Beispiel, mit dem erwähnten Dummy, bereits manuell eingefügt.
Variablen sind country, year, var3, dummy; wobei var3 im Jahr 1960 das Kriterium enthält.
Dateianhänge
Bsp_FBN22.dta
(1.47 KiB) 238-mal heruntergeladen
FBN22
 
Beiträge: 3
Registriert: Mi 13. Mär 2013, 15:17
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: if-Bezug auf einzelnen Wert in Paneldaten

Beitragvon daniel » Di 19. Mär 2013, 13:36

Falls jedes Land das Jahr 1960 beobachtet wurde, sollte sowas funktionieren

Code: Alles auswählen
g byte a = (year == 1960) & (var3 >= 2)
bys country (year) : replace a = a[_n - 1] if inrange(year, 1961, 1970)
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: if-Bezug auf einzelnen Wert in Paneldaten

Beitragvon FBN22 » Mi 20. Mär 2013, 18:35

das scheint soweit zu klappen, ja. vielen dank, daniel!

Jedoch verstehe ich nicht ganz, was a[_n-1] macht/bewirkt. kannst du mir das vielleicht erklären?
FBN22
 
Beiträge: 3
Registriert: Mi 13. Mär 2013, 15:17
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: if-Bezug auf einzelnen Wert in Paneldaten

Beitragvon daniel » Mi 20. Mär 2013, 18:45

Jedoch verstehe ich nicht ganz, was a[_n-1] macht/bewirkt. kannst du mir das vielleicht erklären?


Das schaust Du Dir am besten einfach an

Code: Alles auswählen
clear
se obs 10
g foo = _n
l
g bar = foo[_n - 1]
l
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 1 Gast

cron