Tomando una Condicional Mean en Stata
-
20-09-2019 - |
Pregunta
Vamos a decir que tengo un conjunto de datos de Stata que tiene dos variables: type
y price
. El valor type
para cada observación es un número entre 1 y 10.
Quiero añadir un tercer valor que es el price
promedio de todas las variables de ese type
. Así, por ejemplo, si la primera observación tuvo un type
de 3 y un price
de 10, entonces me gustaría añadir un tercer valor que es el price
promedio de todas las observaciones con type
= 3.
¿Cómo puedo hacer esto en Stata?
Solución
Probablemente hay algunas maneras de hacer esto, pero esto es lo que me gustaría sugerir.
gen newvar = .
forvalues i = 1/10 {
qui sum price if type == `i', meanonly
replace newvar = r(mean) if type == `i'
}
Otros consejos
Aquí hay un enfoque diferente que es más simple y eficiente. Si usted tiene un gran conjunto de datos, esto va a ser más rápido que el bucle de múltiples pasos ATRON sugirió y este enfoque se adapta a los cambios en el alcance de su "tipo" variable (si cambia de conjuntos de datos de tamaño, que no tienen que volver a través de su código y cambiar el rango en el comando forvalues
).
1) Crear un conjunto de datos falsos
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) Generar la price
promedio por type
bysort type: egen meanprice = mean(price)
li type price meanprice, sepby(type)
Se pueden crear con los medios
by type: egen conditional_mean = mean(price)