Wie zu verwenden `if` mit den lokalen makro in Stata?
Ich versuche zu weisen Werte von income
im Jahr 2012 auf die einheimischen. So dass die lokalen val_AK
hätte Wert von income
im Zustand "AK", val_AL
hätte Wert von income
im Status "AL".... Hier ist die Stata 11-version .dta
Der folgende code erzeugt AK not found r(111);
Jedoch AK
existiert in state_nsw
, das ist eine string-variable:
foreach i in "AK" "AL" "AR" "AZ" {
if (state_nsw=="`i'" & year==2012) { local val_`i'=income}
}
Ich auch versucht, mit Hilfe diese Methode und so:
if (state_nsw=="`i'" ...
...
//and got invalid name r(198)
Wo ist mein Fehler?
Wo ist
Danke @Metriken für die Antwort.
Es tut mir Leid. Sind Sie immer noch der Fehler???
Ja, ich weiß nicht warum...ich denke, das hat etwas zu tun mit "AK"
Hast du die Beispiel-Daten posten?
j
definiert? Geben Sie uns bitte sample-Daten zu arbeiten.Danke @Metriken für die Antwort.
j
ist die lokale für das Jahr...werde ich korrigieren Sie den code oben...wir ignorieren können j...es funktioniert...ich habe nur korrigiert den codeEs tut mir Leid. Sind Sie immer noch der Fehler???
Ja, ich weiß nicht warum...ich denke, das hat etwas zu tun mit "AK"
Hast du die Beispiel-Daten posten?
InformationsquelleAutor | 2013-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als
state_nsw
ist eine string-variable kann nur verglichen werden mit entweder einer Zeichenkette oder einer anderen string-variable.Vereinfachung nach dem ersten Wert in der Schleife
die innere Anweisung interpretiert wird, als
Nun soweit, Stata angeht
AK
ist nicht eine wörtliche Zeichenfolge, so kann es nur der name einer string-variable. Aber Sie haben keine solche variable, die ist, warum Sie bekam den Fehler, den Sie haben. Was wäre besser geeignet gewesen wäreoder, mehr allgemein,
So, warum hast du den Fehler
invalid name r(198):
Kann ich nicht beantworten, dass aus der Suche in deinem code, aber siehe unten.
Ihre sorgen sind noch nicht vorbei. Ihr code ist sehr verwirrt.
Den
if
- Anweisung interpretiert werden mit Bezug auf die erste Beobachtung. Dies erklärt sich bei http://www.stata.com/support/faqs/programming/if-command-versus-if-qualifier/Ähnlich
wird immer so interpretiert werden,
unabhängig von der
if
Befehl.{ }
auf der gleichen Zeile nachif
wurde out-of-date seit der version 8 und kann nicht so funktionieren, wie Sie es wünschen.Was funktionieren sollte ist
obwohl, warum Sie wollen, dies zu tun, ist ein Rätsel.
year
ist eine string-variable.Danke. Aber es funktioniert nicht so wie ich wollte: die lokale
val_AL
existiert nicht. Ich habe versucht: recode income_nsweight .= `val_AL' und ich bekam eine Fehlermeldung, dass "val_AL" ist nicht identifizierte.Das ist sinnlos. Sie vielleicht gedacht
`val_AL'
oder`val_AK'
Wenn Sie sich auf lokale Makros, die Sie brauchen, öffnen und schließen Anführungszeichen.Ja, das ist es, was ich meinte. es ist ein Tippfehler
Ich habe versucht: recode income_nsweight .= "`val_AL'" --, und bekommen unknow el in der Regel
InformationsquelleAutor Nick Cox
Kann ich nicht noch die Daten offen. Versuchen Sie Folgendes:
type mismatch r(109);
Das wird nicht funktionieren. Am besten
val
wird nur die Letzte Zeichenfolge kopiert,val_AZ
, die keine Verwendung.Ich habe es zu arbeiten, aber das problem ist, dass
val
enthält den string, sondern die Höhe des Einkommens,gemäß Ihrer Lösung heredies wurde nun korrigiert.
Immer noch nicht funktionieren. Sie häufen string-Werte (Variablen-Namen), nicht die numerischen Werte, die Sie enthalten. Auch, versuchen, eine numerische variable in einem makro sinnlos ist, in jedem Fall.
InformationsquelleAutor Metrics