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

时间:2017-10-22 14:41:30

标签: for-loop stata

我必须生成变量entry_1entry_2entry_3,如果该特定月份的1 id_i,则会采用值entry=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
}

2 个答案:

答案 0 :(得分:1)

你可以做这样的事情(尽管你的数据对于你提出的问题看起来并不合适):<​​/ p>

forvalues i = 1/3 {
  gen entry_`i' = id == `i' & entry == 1
}

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

答案 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 |
     +--------------------------------------------------------+