For loop 如何在stata中记录其他变量的属性

For loop 如何在stata中记录其他变量的属性,for-loop,stata,For Loop,Stata,我必须生成变量entry\u 1、entry\u 2和entry\u 3,如果该特定月份的id\u I为entry=1,则这些变量将采用值1 例如 id month entry entry_1 entry_2 entry_3 1 1 1 1 0 0 1 2 0 0 0 0 1 3 0 0 1 1 1 4 0 0

我必须生成变量
entry\u 1
entry\u 2
entry\u 3
,如果该特定月份的
id\u I
entry=1
,则这些变量将采用值
1

例如

 id month entry entry_1 entry_2  entry_3 
  1   1     1     1       0        0
  1   2     0     0       0        0
  1   3     0     0       1        1
  1   4     0     0       0        0
  2   1     0     1       0        0
  2   2     0     0       0        0
  2   3     1     0       1        1
  2   4     0     0       0        0
  3   1     0     1       0        0
  3   2     0     0       0        0
  3   3     1     0       1        1
  3   4     0     0       0        0
有没有人愿意提出一个如何实现循环的想法? 我在想这样的事情:

forvalues i=1(1)3 {
  gen entry`i'=0
  replace entry`i'=1  if on that particular month id=`i' had entry=1
}

您可以这样做(尽管您的数据与您提出的问题不太相符):


这将为forvalues循环中的每个i生成一个伪变量entry_i,如果id为i,entry为1,则entry_i=1,否则为0。

代码可以简化为最多一个循环

clear 
input  id month entry entry_1 entry_2  entry_3 
  1   1     1     1       0        0
  1   2     0     0       0        0
  1   3     0     0       1        1
  1   4     0     0       0        0
  2   1     0     1       0        0
  2   2     0     0       0        0
  2   3     1     0       1        1
  2   4     0     0       0        0
  3   1     0     1       0        0
  3   2     0     0       0        0
  3   3     1     0       1        1
  3   4     0     0       0        0
end 

forval j = 1/4 { 
     egen entry`j' = total(entry & id == `j'), by(month) 
} 

list id month entry entry? , sepby(id) 

     +--------------------------------------------------------+
     | id   month   entry   entry1   entry2   entry3   entry4 |
     |--------------------------------------------------------|
  1. |  1       1       1        1        0        0        0 |
  2. |  1       2       0        0        0        0        0 |
  3. |  1       3       0        0        1        1        0 |
  4. |  1       4       0        0        0        0        0 |
     |--------------------------------------------------------|
  5. |  2       1       0        1        0        0        0 |
  6. |  2       2       0        0        0        0        0 |
  7. |  2       3       1        0        1        1        0 |
  8. |  2       4       0        0        0        0        0 |
     |--------------------------------------------------------|
  9. |  3       1       0        1        0        0        0 |
 10. |  3       2       0        0        0        0        0 |
 11. |  3       3       1        0        1        1        0 |
 12. |  3       4       0        0        0        0        0 |
     +--------------------------------------------------------+

你好谢谢你的回答。使用该代码,我获得了条目\u 1条目\u 2条目\u 3
100
00
00
00
00
00
00
01
00
00
00
00
01
00
00
但是我仍然需要获得更多的条目,例如,在条目\u 1的第1个月的id=2,尽管我认为我可以按月生成:egen sum\u条目\u 1=max谢谢!我不知道区别是什么,但很高兴你计算出了I=1/3{gen entry{code>I'=id=I'&entry==1}的值I=1/3{by month:egen sum\u entry{code>I'=max(entry{code>I')}再次感谢!
clear 
input  id month entry entry_1 entry_2  entry_3 
  1   1     1     1       0        0
  1   2     0     0       0        0
  1   3     0     0       1        1
  1   4     0     0       0        0
  2   1     0     1       0        0
  2   2     0     0       0        0
  2   3     1     0       1        1
  2   4     0     0       0        0
  3   1     0     1       0        0
  3   2     0     0       0        0
  3   3     1     0       1        1
  3   4     0     0       0        0
end 

forval j = 1/4 { 
     egen entry`j' = total(entry & id == `j'), by(month) 
} 

list id month entry entry? , sepby(id) 

     +--------------------------------------------------------+
     | id   month   entry   entry1   entry2   entry3   entry4 |
     |--------------------------------------------------------|
  1. |  1       1       1        1        0        0        0 |
  2. |  1       2       0        0        0        0        0 |
  3. |  1       3       0        0        1        1        0 |
  4. |  1       4       0        0        0        0        0 |
     |--------------------------------------------------------|
  5. |  2       1       0        1        0        0        0 |
  6. |  2       2       0        0        0        0        0 |
  7. |  2       3       1        0        1        1        0 |
  8. |  2       4       0        0        0        0        0 |
     |--------------------------------------------------------|
  9. |  3       1       0        1        0        0        0 |
 10. |  3       2       0        0        0        0        0 |
 11. |  3       3       1        0        1        1        0 |
 12. |  3       4       0        0        0        0        0 |
     +--------------------------------------------------------+