首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Stata中同一组的其他成员的属性

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

Stack Overflow用户
提问于 2013-07-05 02:37:20
回答 1查看 142关注 0票数 1

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

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

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

在样本图像中,“父亲i”和“父亲n”表示父亲已经去世或信息不可用。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-05 05:50:34

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

这里缺乏关于哪些变量是数值变量、哪些变量是带有值标签的数值变量以及哪些是字符串变量的信息。

但是假设q0111是字符串,我们可以通过以下方式获得父亲标识符的仅数字值

代码语言:javascript
复制
gen fatherid = real(q0111)

那就是

代码语言:javascript
复制
bysort xhhkey (xpers) : gen father_educ = q0407_a[fatherid]

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

正如@Metrics断言的那样,不需要循环。

代码语言:javascript
复制
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:做什么。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17476465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档