如何使用循环生成新变量

时间:2018-01-19 15:50:42

标签: loops stata

我想生成一个包含某些特征的假人。

mgr firm enterdate leavedate newdummy
A    x      1        3          .
B    x      3        5          1
C    x      6        15         1
D    x      8        15         0
E    x      9        15         0

如果所有经理在此经理的离职日期小于当前企业日期之前进入,则假人等于一。

1 个答案:

答案 0 :(得分:0)

也许这就是所期望的,或者至少是朝着正确方向的开始。

* Example generated by -dataex-. To install: ssc install dataex
clear
input str1(mgr firm) byte(enterdate leavedate newdummy)
"A" "x" 1  3 .
"B" "x" 3  5 1
"C" "x" 6 15 1
"D" "x" 8 15 0
"E" "x" 9 15 0
end
generate maxlv = .
bysort firm (enterdate): replace maxlv = max(leavedate[_n-1],maxlv[_n-1]) if _n>1
generate nd = .
replace nd = maxlv <= enterdate if maxlv!=.
list, clean

产生

       mgr   firm   enterd~e   leaved~e   newdummy   maxlv   nd  
  1.     A      x          1          3          .       .    .  
  2.     B      x          3          5          1       3    1  
  3.     C      x          6         15          1       5    1  
  4.     D      x          8         15          0      15    0  
  5.     E      x          9         15          0      15    0