在给出的示例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:
.