Tendo uma Condicional Significa Stata
-
20-09-2019 - |
Pergunta
Vamos dizer que eu tenho um Stata conjunto de dados de duas variáveis: type
e price
.O type
valor de cada observação é um número entre 1 e 10.
Eu quero adicionar um terceiro valor que é a média price
de todas as variáveis de que type
.Assim, por exemplo, se a primeira observação tinha um type
de 3 e um price
de 10, então eu gostaria de adicionar um terceiro valor que é a média price
de todas as observações com type
=3.
Como posso fazer isso no Stata?
Solução
Provavelmente, existem algumas maneiras de fazer isso, mas isso é o que eu sugiro.
gen newvar = .
forvalues i = 1/10 {
qui sum price if type == `i', meanonly
replace newvar = r(mean) if type == `i'
}
Outras dicas
Aqui está uma abordagem diferente, que é mais simples e eficiente.Se você tem um grande conjunto de dados, este será mais rápido do que o multi-passo loop aTron sugerido e esta abordagem se adapta às mudanças no intervalo do seu "tipo" da variável (se seu conjunto de alterações no tamanho, você não tem que ir para trás através de seu código e alterar o intervalo em que o forvalues
de comando).
1) Criar um conjunto de dados 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) Gerar a média price
por type
bysort type: egen meanprice = mean(price)
li type price meanprice, sepby(type)
Você pode criar os meios, com
by type: egen conditional_mean = mean(price)