2 Stimmen

Bildung eines bedingten Mittelwerts in Stata

Nehmen wir an, ich habe einen Stata-Datensatz, der zwei Variablen enthält: type y price . Die type Wert für jede Beobachtung ist eine Zahl zwischen 1 und 10.

Ich möchte einen dritten Wert hinzufügen, der den Durchschnitt darstellt price aller Variablen dieses type . Wenn zum Beispiel die erste Beobachtung einen type von 3 und einer price von 10, dann möchte ich einen dritten Wert hinzufügen, der der Durchschnitt ist price aller Beobachtungen mit type =3.

Wie kann ich dies in Stata tun?

6voto

eric.a.booth Punkte 651

Hier ist ein anderer Ansatz, der einfacher und effizienter ist. Wenn Sie einen großen Datensatz haben, ist dies schneller als die von aTron vorgeschlagene mehrstufige Schleife, und dieser Ansatz passt sich an Änderungen im Bereich Ihrer "Typ"-Variablen an (wenn sich die Größe Ihres Datensatzes ändert, müssen Sie nicht durch Ihren Code zurückgehen und den Bereich in der forvalues Befehl).

1) Erstellen Sie einen gefälschten Datensatz

clear
input type price
1 1000
2 3200
3 5000
4 1200
5 1000
1 4000
2 2000
3 4000
4 1200
5 2000
end

2) Erzeugen Sie den Durchschnitt price von type

bysort type: egen meanprice = mean(price)

li type price meanprice, sepby(type)

1voto

aTron Punkte 273

Es gibt wahrscheinlich mehrere Möglichkeiten, dies zu tun, aber ich würde folgendes vorschlagen.

gen newvar = .
forvalues i = 1/10 {

  qui sum price if type == `i', meanonly
  replace newvar = r(mean) if type == `i'

}

1voto

justin cress Punkte 1615

Sie können die Mittel erstellen mit

by type: egen conditional_mean = mean(price)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X