1

在我的数据中,我有以下变量:家庭 ID、家庭成员 ID、父亲 ID、受教育年限、父亲是谁。因此,例如 23 号房屋中的第 3 个人可能会说第 1 个人是他或她的父亲,而第 23 号房屋中的第 6 个人、第 7 个人和第 8 个人可能会说第 9 个人是他们的父亲。这很可能是一个共同的家庭。

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

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

在样本图像中,“父亲 i”和“父亲 n”表示父亲已死或信息不可用。 在此处输入图像描述

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
4

1 回答 1

2

在给出的示例xpers中,每个家庭的 run 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 来说是陌生的:它们是变量。

by:http://www.stata-journal.com/article.html?article=pr0004上有一个相当详细的教程,即使是有经验的 Stata 用户也经常低估你可以用by:.

于 2013-07-04T21:50:33.790 回答