请帮助我在某些条件下复制变量?我的原始数据集如下所示:
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
但它没有按预期工作。
答案 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)