我有一个数据集,其中一个家庭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 |
+--------------------------------------------+
答案 0 :(得分:1)
bysort hhid mid (surveyyear) : gen dropped = inschool[1] == 1 & inschool[2] == 0
评论比代码长:
在具有相同hhid
和mid
的观察区块内,按surveyyear
排序。
您希望第3年inschool
但第4年不是{4}}的学生。因此,inschool
在第一次观察中为1,在第二次观察中为0。
此处下标[1]
和[2]
是指by:
语句定义的观察块内的顺序。
如果需要进一步的细节,请参阅例如this article。请注意,与一个标记相反,不需要循环(或者,如果您愿意,可能的循环内置于by:
框架)。