Stata:需要帮助从面板数据创建二进制变量

时间:2014-03-03 19:48:06

标签: for-loop stata

我有一个数据集,其中一个家庭ID(hhid)和一个成员ID(mid)标识一个独特的人。我有两年间进行的两次独立调查的结果(surveyYear)。我也有关于该人是否当时在学校注册的数据。

我想要一个二进制变量,表示有关个人是否在调查之间辍学(如果丢弃则为1,如果仍在学校则为0)

我对Stata有一个很好的理解但是这个编码挑战似乎有点超出我的范围,因为我不确定如何将后期id的校内状态与之前的id进行比较然后将结果传播到二进制列中。

这是我需要的一个例子

以前:

     +----------------------------------+
     | hhid   mid   survey~r   inschool |
     |----------------------------------|
  1. |    1     2          3          1 |
  2. |    1     2          4          1 |
  3. |    1     3          3          1 |
  4. |    1     3          4          1 |
  5. |    2     1          3          1 |
  6. |    2     1          4          0 |
  7. |    2     2          3          0 |
  8. |    2     2          4          0 |
     +----------------------------------+

之后:

     +--------------------------------------------+
     | hhid   mid   survey~r   inschool   dropped |
     |--------------------------------------------|
  1. |    1     2          3          1         0 |
  2. |    1     2          4          1         0 |
  3. |    1     3          3          1         0 |
  4. |    1     3          4          1         0 |
  5. |    2     1          3          1         1 |
  6. |    2     1          4          0         1 |
  7. |    2     2          3          0         0 |
  8. |    2     2          4          0         0 |
     +--------------------------------------------+

1 个答案:

答案 0 :(得分:1)

bysort hhid mid (surveyyear) : gen dropped = inschool[1] == 1 & inschool[2] == 0

评论比代码长:

  1. 在具有相同hhidmid的观察区块内,按surveyyear排序。

  2. 您希望第3年inschool但第4年不是{4}}的学生。因此,inschool在第一次观察中为1,在第二次观察中为0。

  3. 此处下标[1][2]是指by:语句定义的观察块内的顺序。

  4. 如果需要进一步的细节,请参阅例如this article。请注意,与一个标记相反,不需要循环(或者,如果您愿意,可能的循环内置于by:框架)。