Stata:如何在某些条件下复制观察结果

时间:2014-06-25 17:57:17

标签: stata

请帮助我在某些条件下复制变量?我的原始数据集如下所示:

week   category   averageprice

 1         1            5
 1         2            6
 2         1            4 
 2         2            7

此表显示,对于每个星期,每种商品都有一个独特的平均价格。

我需要创建以下变量:

averageprice1(第1类的平均价格)

averageprice2(第2类的平均价格)

这样:

week     category  averageprice1  averageprice2

  1          1           5              6
  1          2           5              6
  2          1           4              7
  2          2           4              7

意思是第1周,第1类的平均价格保持在5美元,而av。适合2的价格保持在6.类似的逻辑适用于第2周。 正如您所看到的那样,新变量根据一周而重复。

我还在学习Stata。我试过了:

  

bysort week:如果= = 1

,则替换averageprice1 = averageprice

但它没有按预期工作。

1 个答案:

答案 0 :(得分:2)

你根本没有重复观察(在Stata意义上的意思,即案例或记录​​),因为(1)观察的数量保持不变(2)你正在复制某些值,而不是观察的内容。关于“重复变量”的类似评论。然而,这只是松散地使用术语。

非常简单地举例说明

clear
input week   category   averageprice
1         1            5
1         2            6
2         1            4 
2         2            7
end 
bysort week (category) : gen averageprice1 = averageprice[1] 
by week: gen averageprice2 = averageprice[2] 
l

      +--------------------------------------------------+
      | week   category   averag~e   averag~1   averag~2 |
      |--------------------------------------------------|
   1. |    1          1          5          5          6 |
   2. |    1          2          6          5          6 |
   3. |    2          1          4          4          7 |
   4. |    2          2          7          4          7 |
      +--------------------------------------------------+

这是使用by:下标的标准应用程序。你的代码不起作用,因为它并没有强迫Stata在需要时查看其他观察结果。事实上,您对bysort week的使用并未影响代码的应用方式。

编辑:

概括是

egen averageprice1 = mean(averageprice / (category == 1)), by(week) 
egen averageprice2 = mean(averageprice / (category == 2)), by(week)