楼主: chenshoubian
1136 3

[数据管理求助] 一个关于面板数据的问题求帮助! [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

硕士生

34%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0.0032
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
396 点
帖子
31
精华
0
在线时间
268 小时
注册时间
2015-1-29
最后登录
2020-5-18

楼主
chenshoubian 发表于 2017-8-3 14:24:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

如图,目前的数据结构是ID至final几列,我想生成的数据结构是ID_01和year_01。具体而言,ID代表样本的名字,year是指调查的年份(有的样本参与了部分调查有的全参与了,几个典型的样本如1-3),firstmarr是指第一次结婚的年份,final是最终的观测截止年。规则是只有当firstmarr以后的调查年度的观测才进入观测序列,例如样本1是全部进入观测,而样本2因为是在1992年结婚,因此只取1993年及以后的调查年份,最后希望生成如ID_01和year_01这样的数据结构。
跪谢大神帮助!!


  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float(ID year firstmarr final ID_01 year_01)
  4. 1 1991 1990 2011 1 1991
  5. 1 1993 1990 2011 1 1993
  6. 1 1997 1990 2011 1 1997
  7. 1 2000 1990 2011 1 2000
  8. 1 2004 1990 2011 1 2004
  9. 1 2006 1990 2011 1 2006
  10. 1 2009 1990 2011 1 2009
  11. 1 2011 1990 2011 1 2011
  12. 2 1993 1992 2011 2 1993
  13. 2 1997 1992 2011 2 1997
  14. 2 2000 1992 2011 2 2000
  15. 2 2006 1992 2011 2 2004
  16. 3 2000 2000 2011 2 2006
  17. 3 2006 2000 2011 2 2009
  18. 3 2009 2000 2011 2 2011
  19. .    .    .    . 3 2000
  20. .    .    .    . 3 2004
  21. .    .    .    . 3 2006
  22. .    .    .    . 3 2009
  23. .    .    .    . 3 2011
  24. end
复制代码





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


本帖被以下文库推荐

沙发
chenshoubian 发表于 2017-8-4 09:19:11
顶顶顶顶顶顶

藤椅
黃河泉 在职认证  发表于 2017-8-4 15:39:13
Daniel Bela 建议(有点复杂)
  1. // temporary variables
  2. tempvar expandtarget obscounter offset

  3. // save total number of survey waves
  4. levelsof year, local(wavelist)
  5. local wavecount: word count `wavelist'

  6. // determine how many waves to exclude for each person
  7. gen `expandtarget' = `wavecount'
  8. foreach wave of local wavelist {
  9.     replace `expandtarget' = `expandtarget' - 1 if (`wave' < firstmarr)
  10. }
  11. gen `offset' = `wavecount' - `expandtarget'

  12. // reduce dataset to one observation per ID
  13. keep ID `expandtarget' `offset'
  14. duplicates drop

  15. // expand dataset to number of waves (minus diminisher) per person
  16. expand `expandtarget'

  17. // ex-post fillin of wave information
  18. bysort ID: gen `obscounter' = _n
  19. gen wave = ustrword(`"`wavelist'"',`obscounter'+`offset')
  20. destring wave, replace

  21. // rename variables to target format
  22. rename (ID wave) (ID_01 year_01)
复制代码

板凳
chenshoubian 发表于 2017-8-4 22:22:44
黃河泉 发表于 2017-8-4 15:39
Daniel Bela 建议(有点复杂)
哇塞,厉害厉害

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-23 22:39