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?

¿Fue útil?

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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top