Stata. Wie zu verwenden if-Anweisung mit sum()?
Ich versuche, führen Sie den folgenden code:
forval i = 1/51 {
//number of households
by hhid, sort: gen nvals = _n==1
count if (nvals & stateID == `i')
local stateTotalHH = r(N)
local avPersonHH`i' = sum(numper)/`stateTotalHH' if(nvals & stateID ==`i')
drop nvals
}
Alles funktioniert einwandfrei außer if
ist nicht erlaubt, mit sum()
. Wie kann ich abschätzen der Summe oder die Summe aller Werte in numper
variable, die für jeden Mitgliedstaat und auf der Ebene der Haushalte?
ps:
- Kann ich nicht verwenden
collapse numper, by(stateID)
weil ich andere Einschätzungen - ich kann nicht auch Folgendes tun:
duplicates drop hhid, force
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem problem nicht selbst nennen für
sum()
mitif
, so ist es am besten, am Anfang beginnen.Rekonstruieren, Ihr problem, das ist nicht gut erklärt,
Haben Sie Beobachtungen für Personen in Haushalten (id
hhid
) innerhalb der 50 Staaten der USA und dem District of Columbia (idstateID
).Haben Sie eine variable
numper
, die Anzahl der Personen pro Haushalt, und Sie möchten, dass der Durchschnittliche pro Staat.Beobachtungen sind wiederholt für jeden einzelnen in einem Haushalt, so ist es notwendig, mit nur einer Beobachtung pro Haushalt.
Können Sie tag jeder Haushalt einmal aus, indem
Durchschnitt als neue variable wäre
Stata wird die Durchschnittliche
numper/tag
welche verschiedentlich wirdnumper/1
undnumper/0
; die missings aus der zweiten division wird einfach ignoriert, das ist, was gewollt ist.Diese variable wiederholt sich für jeden Haushalt. Zu sehen, nur einen Wert für jeden
stateID
,Was ist falsch mit Ihrem code? Hier ist eine unvollständige Liste:
ein. Keine Schleife erforderlich ist.
b. Wenn Sie es waren, die Anweisung
by hhid, sort: gen nvals = _n==1
sollte nicht wiederholt werden.c.
sum()
ist eine Funktion für die kumulative Summen über Beobachtungen, nicht das, was Sie hier wollen.d. Die Linie
wäre am besten berechnen Sie eine Zahl, aber die
if
Zustand ist fehl am Platz.if
waslocal
... oft macht es Sinn, in Stata, sondern setzenif
auf der rechten Seite einlocal
definition macht nur Sinn für die Manipulation von text mit Befehlen.Ihren Kommentar auf dieser Linie findet diese grundlegenden Missverständnisse, c. und d....
e. Sie wurden mit dem Ziel gesammelt haben 51 Werte der Mittelwerte in so vielen lokalen Makros, aber noch müssen Sie sich irgendwo nützlich.
f. Gesonderte Berechnung von Summen und zahlen ist nicht erforderlich, da Sie in Stata berechnen den für Sie bedeuten.
(SPÄTER) Dieser code spielt zusammen Schritt für Schritt durch Ihre Abneigung gegen die Verwendung
collapse
undduplicates
, die aus Gründen, die nicht angegeben sind. Aber die meisten erfahrenen Stata-Anwender gerne verwenden brute-force:dann
merge
zurück. Diese Lösung ist nicht nur direkt, sondern nutzt auch weniger eigenwilligen Stata details, die sich Zeit nehmen kann, herauszufinden.duplicates drop hhid, force collapse...
Methode, aber ich wollte es vermeiden, weil ich andere Einschätzungen in der gleichen.do
Datei...und ich wollte alles in einer Schleife.merge
ing riesige Datenmengen nimmt sich viel Zeit...in der Wirtschaft die Leute spielt, die mit Variablen und die Ergebnisse 🙂 , also timing ist eine große Sache.merge
. Was Sie wollten war der code für eine Schleife über Staaten, die sich nur langsam Dinge nach unten. Viele Menschen verbringen 2 Stunden coding da etwas, das dauert 2 Minuten und Sie lieber 2 Sekunden. Das ist eine gute Idee, nur, wenn Sie gehen zu tun, die gleichen Sachen wiederholt.