1

私のデータには、世帯 ID、世帯内の人物 ID、父親 ID、教育年数、父親が誰であるかという変数があります。例えば、家 23 の人 3 は人 1 が父親であると言うかもしれませんが、家 23 の人 6 と 7 と 8 は人 9 が彼らの父親であると言うかもしれません。これはおそらく共同家族です。

同じ世帯の者 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、各世帯でラン 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=pr0004by:には、ある程度詳細なチュートリアルがあります。by:

于 2013-07-04T21:50:33.790 に答える