Принимая условное среднее в Stata - PullRequest
2 голосов
/ 10 октября 2009

Допустим, у меня есть набор данных Stata с двумя переменными: type и price. Значение type для каждого наблюдения - это число от 1 до 10.

Я хочу добавить третье значение, которое является средним price всех переменных этого type. Так, например, если первое наблюдение имело type 3 и price 10, то я хотел бы добавить третье значение, которое является средним price всех наблюдений с type = 3 .

Как я могу сделать это в Stata?

Ответы [ 3 ]

6 голосов
/ 20 октября 2009

Вот другой подход, более простой и эффективный. Если у вас большой набор данных, это будет быстрее, чем предложено многошаговым циклом, предложенным aTron, и этот подход адаптируется к изменениям диапазона вашей переменной типа (если размер вашего набора данных изменяется, вам не нужно вернитесь к своему коду и измените диапазон в команде forvalues).

1) Создать поддельный набор данных

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) Создать среднее значение price на type

bysort type: egen meanprice = mean(price)

li type price meanprice, sepby(type) 
1 голос
/ 25 марта 2011

Вы можете создать средства с помощью

by type: egen conditional_mean = mean(price)
1 голос
/ 11 октября 2009

Вероятно, есть несколько способов сделать это, но это то, что я бы предложил.

gen newvar = .
forvalues i = 1/10 {

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

}

...