Stata中同一组其他成员的属性

时间:2013-07-04 18:37:20

标签: stata

在我的数据中,我有如下变量:家庭身份证,户口人身份证,父亲身份证,受教育年限,父亲身份。例如,23号房子里的人3可能会说1号人是他或她的父亲,而6号和7号房子也是23号房子说9号人是他们的父亲。这可能是一个联合家庭。

所以我不能以通常的方式制作新的专栏eduF,因为对于同一家庭中的第3和第6/7/8人,父亲是不同的,因此即使在同一个家庭中,教育水平也会有所不同。然而,我需要这个新专栏eduF说,对于每个家庭成员,他们列为父亲的人的教育水平是什么。

我认为这需要forvalues或foreach和循环,但我不确定代码是什么!

在样本的图像中,“父亲我”和“父亲n”表示父亲已死或信息不可用。 enter image description here

key pid fathID  yearsEDU
282 10  fath n  13
282 9   1       10
282 8   4   
282 7   4       12
282 6   4       14
282 5   fath n  10
282 4   1       9
282 3   1       8
282 2   fath i  
282 1   fath i  4
283 4   1       4
283 3   1       6
283 2   fath i  14
283 1   fath i  17

1 个答案:

答案 0 :(得分:2)

在给出的示例中,xpers的值在每个家庭中增加1。 (如果不是这样,可以安排)。

这里缺少关于哪些变量是数字的信息,这些数字是带有值标签的数字,而且是字符串。

但假设q0111是字符串,我们可以通过

获取父亲标识符的仅数字值
gen fatherid = real(q0111)

然后是

bysort xhhkey (xpers) : gen father_educ = q0407_a[fatherid]

这里的关键思想是,在by:的支持下,下标在组内被解释,因此fatherid的值恰好是我们需要的下标。

@Metrics断言,不需要循环。

list xhhkey xpers q0111 q0407_a fatherid father_educ, sep(0)

     +-----------------------------------------------------------+
     | xhhkey   xpers      q0111   q0407_a   fatherid   father~c |
     |-----------------------------------------------------------|
  1. |    282       1   father i        13          .          . |
  2. |    282       2   father i        10          .          . |
  3. |    282       3          1         .          1         13 |
  4. |    282       4          1        12          1         13 |
  5. |    282       5   father n        14          .          . |
  6. |    282       6          4        10          4         12 |
  7. |    282       7          4         9          4         12 |
  8. |    282       8          4         8          4         12 |
  9. |    282       9          1         .          1         13 |
 10. |    282      10   father n         4          .          . |
 11. |    283       1   father i         4          .          . |
 12. |    283       2   father i         6          .          . |
 13. |    283       3          1        14          1          4 |
 14. |    283       4          1        17          1          4 |
 15. |    284       1   father i         5          .          . |
 16. |    284       2   father n         .          .          . |
 17. |    284       3          1         1          1          5 |
 18. |    284       4   father i         4          .          . |
 19. |    284       5   father n         8          .          . |
 20. |    284       6   father i         7          .          . |
 21. |    284       7   father n        18          .          . |
 22. |    284       8          6         2          6          7 |
 23. |    284       9          6         .          6          7 |
 24. |    284      10   father i         9          .          . |
     +-----------------------------------------------------------+

顺便说一句,列的术语在矩阵的上下文之外与Stata不同:它们是变量。

http://www.stata-journal.com/article.html?article=pr0004 by:上有一个中等详细的教程。即使是经验丰富的Stata用户也经常低估使用by:可以做些什么。