在Stata中连续标记

时间:2016-02-12 22:54:48

标签: stata

任务是确定产品(在特定商店中)连续哪一周进行促销。

clear
input ///
upc week store promo
1 1 86 1
1 2 86 1
1 3 86 1
1 4 86 1
3 1 86 0
3 2 86 1
4 1 86 0
4 2 86 1
4 3 86 1
end

最终结果应如下所示:

upc week store promo promocount
1 1 86 1 1
1 2 86 1 2
1 3 86 1 3
1 4 86 1 4
3 1 86 0 0
3 2 86 1 1
4 1 86 0 0
4 2 86 1 1
4 3 86 1 2
end

我有800K obs。,我遇到了真实数据集的问题。当我运行bysort upc week store promo: gen prcount = _n if promo==1时,我的数据集以不同的方式排序(因此产生错误的标记):

upc week store promo
1 1 86 1
3 1 86 0
4 1 86 0
1 2 86 1
3 2 86 1
4 2 86 1
1 3 86 1
4 3 86 1
1 4 86 1

无论如何,我现在意识到我的代码是错误的。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我认为

. quietly input ///
> upc week store promo

. generate promocount = 0

. bysort store upc (week): replace promocount = 1+cond(_n==1,0,promocount[_n-1]) if promo>0
(7 real changes made)

. list, clean noobs

    upc   week   store   promo   promoc~t  
      1      1      86       1          1  
      1      2      86       1          2  
      1      3      86       1          3  
      1      4      86       1          4  
      3      1      86       0          0  
      3      2      86       1          1  
      4      1      86       0          0  
      4      2      86       1          1  
      4      3      86       1          2  

确实做你想做的事。