楼主: xiazhiyuan
1185 4

[数据管理求助] 求大家帮助 [推广有奖]

  • 7关注
  • 0粉丝

硕士生

60%

还不是VIP/贵宾

-

威望
0
论坛币
1022 个
通用积分
3.7000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1298 点
帖子
95
精华
0
在线时间
202 小时
注册时间
2014-2-7
最后登录
2025-6-3

楼主
xiazhiyuan 发表于 2019-1-16 13:43:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float(stkcd time)
  4. 2002 .
  5. 2002 0
  6. 2002 .
  7. 2002 .
  8. 2002 .
  9. 2002 .
  10. 2002 .
  11. 2002 .
  12. 2002 .
  13. 2002 .
  14. 2004 .
  15. 2004 .
  16. 2004 .
  17. 2004 .
  18. 2004 .
  19. 2004 .
  20. 2004 0
  21. 2004 .
  22. 2004 .
  23. 2004 .
  24. 2006 .
  25. 2006 .
  26. 2006 .
  27. 2006 .
  28. 2006 .
  29. 2006 .
  30. 2006 .
  31. 2006 .
  32. 2006 0
  33. 2006 .
  34. end
复制代码

------------------ copy up to and including the previous line ------------------
如上面的数据所显示的,我想以每个不同的sktcd为一组,然后根据每组的唯一非缺失值生成序号,目标数据为:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float(stkcd time)
  4. 2002 -1
  5. 2002 0
  6. 2002 1
  7. 2002 2
  8. 2002 3
  9. 2002 4
  10. 2002 5
  11. 2002 6
  12. 2002 7
  13. 2002 8
  14. 2004 -6
  15. 2004 -5
  16. 2004 -4
  17. 2004 -3
  18. 2004 -2
  19. 2004 -1
  20. 2004 0
  21. 2004 1
  22. 2004 2
  23. 2004 3
  24. 2006 -8
  25. 2006 -7
  26. 2006 -6
  27. 2006 -5
  28. 2006 -4
  29. 2006 -3
  30. 2006 -2
  31. 2006 -1
  32. 2006 0
  33. 2006 1
  34. end
复制代码

------------------ copy up to and including the previous line ------------------

接下来当然还有很多股票代码,但篇幅原因就截取了这一小段了。不知道坛友有没有什么好办法呢,我想过一段时间,可能需要bysort命令,但苦思冥想还是没有办法,望坛友解答!!!

二维码

扫码加我 拉你入群

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

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

关键词:generated including previous generate install

沙发
黃河泉 在职认证  发表于 2019-1-16 17:40:45
到底是哪一个资料?到底要做什么?请再说明清楚!

藤椅
xiazhiyuan 发表于 2019-1-16 20:01:07
黃河泉 发表于 2019-1-16 17:40
到底是哪一个资料?到底要做什么?请再说明清楚!
版主好,想将第一段代码变成第二段代码的样子,提问可能没说清楚,不好意思

板凳
黃河泉 在职认证  发表于 2019-1-17 08:57:13
xiazhiyuan 发表于 2019-1-16 20:01
版主好,想将第一段代码变成第二段代码的样子,提问可能没说清楚,不好意思
后来我看清楚了,Maarten Buis 之建议:
  1. gen order = _n                                    // store the original sort order
  2. bysort stkcd (order) : gen base = _n if time == 0 // find the index of 0
  3. bysort stkcd (base)  : replace base = base[1]     // copy that index to all rows
  4. bysort stkcd (order) : replace time = _n - base   // create the variable we want
  5. drop base order                                   // drop helper variables

  6. list, sepby(stkcd)                                // admire the result
复制代码

报纸
xiazhiyuan 发表于 2019-1-18 11:21:20
黃河泉 发表于 2019-1-17 08:57
后来我看清楚了,Maarten Buis 之建议:
代码很受用!十分感谢版主!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 02:51