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?

Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top