2015-03-19 2 views
0

У меня есть набор данных, который выглядит следующим образом:Loops с Эгеном в Stata

delta taubar 
    0  1.5 
    -0.223 2 
    3  6.5 
    0.334 2 
    11  7 
    2.123 1.5 

delta принимает разных значений, соответствующий taubar. Однако я хотел бы создать переменную, которая принимает среднее значение delta для каждого значения taubar. То есть, если taubar имеет значение 2 с частотой, скажем 400, и для каждого из этих 400 delta отличается, я хотел бы создать переменную, которая является средним значением delta для каждого значения taubar.

Я использовал

egen meandelta = mean(delta) if taubar == 2 

В этом случае Stata создает значение, скажем, 0,234, которое является средством дельт во всех 400 2-х. Это неэффективно; также имеется 600 taubar с в наборе данных, каждый из которых может иметь 500 соответствующих delta с. Я хотел бы получить каждый taubar от 1,5 до 327, соответствующий среднему значению его delta s.

ответ

1

Не совсем понятно, что вы хотите, но нет необходимости в цикле.

Если вы хотите сохранить исходные данные, попробуйте:

bysort taubar: egen meandelta = mean(delta) 

Вы также мог бы рассмотреть:

collapse (mean) meandelta=delta, by(taubar) 

но это будет уничтожить ваши данные и заменить его набором данных средств.

+0

Согласен с тем, что неэффективно ставить одно значение в переменной, так как Димитрий объясняет, что все средства передаются в новую переменную. –