Stata 时间窗口内分类变量的不同级别数(按id)

Stata 时间窗口内分类变量的不同级别数(按id),stata,Stata,这是我试图解决的问题 我有数据看起来像 id time pcode 1 1 1 1 2 1 1 3 1 1 4 2 1 5 4 1 6 1 我实际上有多个id;面板不是很平衡,事实上可能会有缺口,但这是一个复杂的问题,我会留到以后再说 pcode是一个分类变量,认为产品代码可能包含许多介于50到500个级别之间的代码 我试图在一个时间窗口内生成具有唯一pcode级别数的变量。例如,对于两个周期和三个

这是我试图解决的问题

我有数据看起来像

id time pcode
1  1    1    
1  2    1    
1  3    1    
1  4    2    
1  5    4    
1  6    1    
我实际上有多个id;面板不是很平衡,事实上可能会有缺口,但这是一个复杂的问题,我会留到以后再说

pcode是一个分类变量,认为产品代码可能包含许多介于50到500个级别之间的代码

我试图在一个时间窗口内生成具有唯一pcode级别数的变量。例如,对于两个周期和三个周期的窗口,我想分别生成两个变量ncode2和ncode3,如下所示

id time pcode ncode2 ncode3
1  1    1     1      2
1  2    1     2      3
1  3    1     2      3
1  4    2     2      2
1  5    4     1      1
1  6    1     .      .
可以肯定的是:当time=1时,ncode2查看时间2和3;在时间2和3只有一级的pcode是1,所以ncode2=1。当时间=2时,ncode2查看时间3和4,找到唯一值1和2,并记录ncode2=2。等等


我不太关心当你开始到达小组的末尾时会发生什么;在这里,只要前面有一个周期要看,我就给ncode2和ncode3赋值,如果没有,我就给它赋值。

我会在面板中创建包含下一个值的变量,后面的一个,依此类推

然后在包egenmore中应用egen函数rownvals,该包必须使用ssc安装

对于原则,相关技术在一定程度上进行了讨论,其中敦促使用术语“独特的、非唯一的”和“独立的”


此处使用的egen函数以使用Mata函数uniqrows为轴心,将向量减少为一组不同的值,每个值只出现一次

我看这里没有代码尝试。在这个论坛的许多角落里,都会有投票决定是否关闭。你的意思是投票反对,而不是关闭不;我说的是真的,投票结束。很少有人有单方面关闭的名声。对-我的意思是,根据你所说的,至少不是根据我发布的链接,不应该投票关闭。我认为你的问题值得回答,但是有很多关于Meta的讨论集中在没有代码的问题超出论坛范围的观点上,例如,没有显示任何研究成果或不清楚你在问什么,即我们不能评论你没有显示的代码。
. clear 

. input id time pcode

             id       time      pcode
1. 1  1    1    
2. 1  2    1    
3. 1  3    1    
4. 1  4    2    
5. 1  5    4    
6. 1  6    1    
7. 2  4    3
8. 2  5    4
9. 2  6    1
10. end 

. tsset id time 
   panel variable:  id (unbalanced)
    time variable:  time, 1 to 6
            delta:  1 unit

. gen pcode1 = F.pcode
(2 missing values generated)

. gen pcode2 = F2.pcode
(4 missing values generated)

 . gen pcode3 = F3.pcode 
 (6 missing values generated)

. egen distinct2 = rownvals(pcode1 pcode2) 

. egen distinct3 = rownvals(pcode1 pcode2 pcode3) 

. list, sepby(id) 

        +--------------------------------------------------------------------+
        | id   time   pcode   pcode1   pcode2   pcode3   distin~2   distin~3 |
        |--------------------------------------------------------------------|
     1. |  1      1       1        1        1        2          1          2 |
     2. |  1      2       1        1        2        4          2          3 |
     3. |  1      3       1        2        4        1          2          3 |
     4. |  1      4       2        4        1        .          2          2 |
     5. |  1      5       4        1        .        .          1          1 |
     6. |  1      6       1        .        .        .          0          0 |
        |--------------------------------------------------------------------|
     7. |  2      4       3        4        1        .          2          2 |
     8. |  2      5       4        1        .        .          1          1 |
     9. |  2      6       1        .        .        .          0          0 |
        +--------------------------------------------------------------------+