楼主: 沧觋
3321 8

[编程问题求助] 有条件替换观测值 [推广有奖]

  • 0关注
  • 0粉丝

本科生

6%

还不是VIP/贵宾

-

威望
0
论坛币
551 个
通用积分
33.2097
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
234 点
帖子
23
精华
0
在线时间
115 小时
注册时间
2012-11-15
最后登录
2023-8-15

楼主
沧觋 发表于 2018-9-5 05:40:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long Fundcd float All_date str6 Security_id float Est_date
  4. 1 540 ""         .
  5. 1 541 ""         .
  6. 1 542 ""         .
  7. 1 543 ""         .
  8. 1 544 ""         .
  9. 1 545 ""         .
  10. 1 546 ""         .
  11. 1 547 ""         .
  12. 1 548 ""         .
  13. 1 549 ""         .
  14. 1 550 ""         .
  15. 1 551 ""         .
  16. 1 552 ""         .
  17. 1 553 ""         .
  18. 1 554 "600089" 554
  19. 1 555 "002053" 555
  20. 1 556 ""         .
  21. 1 557 ""         .
  22. 1 558 ""         .
  23. 1 559 ""         .
  24. 1 560 "000002" 560
  25. 1 561 ""         .
  26. 1 562 ""         .
  27. 1 563 "000568" 563
  28. 1 564 "600383" 564
  29. 1 565 ""         .
  30. 1 566 ""         .
  31. 1 567 "600963" 567
  32. 1 568 "600895" 568
  33. 1 569 "600104" 569
  34. 1 570 ""         .
  35. 1 571 ""         .
  36. 1 572 "600489" 572
  37. 1 573 "600559" 573
  38. 1 574 ""         .
  39. 1 575 ""         .
  40. 1 576 ""         .
  41. 1 577 "002236" 577
  42. 1 578 ""         .
  43. 1 579 "002242" 579
  44. 1 580 ""         .
  45. 1 581 ""         .
  46. 1 582 ""         .
  47. 1 583 "000972" 583
  48. 1 584 ""         .
  49. 1 585 ""         .
  50. 1 586 ""         .
  51. 1 587 ""         .
  52. 1 588 ""         .
  53. end
  54. format %tmCCYY-NN All_date
  55. format %tmCCYY-NN Est_date
复制代码


请问如何把Est_date替换成All_date, 但是只替换前12个月,并且以出现不是缺失值的Security_id为准。当Security_id缺失时,Est_date保持缺失。

二维码

扫码加我 拉你入群

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

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

关键词:观测值 generated security generate install

沙发
黃河泉 在职认证  发表于 2018-9-5 07:05:46
1. "只替换前12个月"是什么意思?2. 你现在的资料不就是你要的吗?

藤椅
沧觋 发表于 2018-9-5 07:29:37
比如说我egan tag = tag(security_id), 就是说我需要从tag==1开始替换,但是只替换前12个月,资料应该看起来是这样的。
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long Fundcd float All_date str6 Security_id float Est_date byte tag
  4. 1 540 ""         . 0
  5. 1 541 ""         . 0
  6. 1 542 ""       542 0
  7. 1 543 ""       543 0
  8. 1 544 ""       544 0
  9. 1 545 ""       545 0
  10. 1 546 ""       546 0
  11. 1 547 ""       547 0
  12. 1 548 ""       548 0
  13. 1 549 ""       549 0
  14. 1 550 ""       550 0
  15. 1 551 ""       551 0
  16. 1 552 ""       552 0
  17. 1 553 ""       553 0
  18. 1 554 "600089" 554 1
  19. 1 555 "002053" 555 1
  20. 1 556 ""         . 0
  21. 1 557 ""         . 0
  22. 1 558 ""         . 0
  23. 1 559 ""         . 0
  24. 1 560 "000002" 560 1
  25. 1 561 ""         . 0
  26. 1 562 ""         . 0
  27. 1 563 "000568" 563 1
  28. 1 564 "600383" 564 1
  29. 1 565 ""         . 0
  30. 1 566 ""         . 0
  31. 1 567 "600963" 567 1
  32. 1 568 "600895" 568 1
  33. 1 569 "600104" 569 1
  34. 1 570 ""         . 0
  35. 1 571 ""         . 0
  36. 1 572 "600489" 572 1
  37. 1 573 "600559" 573 1
  38. 1 574 ""         . 0
  39. 1 575 ""         . 0
  40. 1 576 ""         . 0
  41. 1 577 "002236" 577 1
  42. 1 578 ""         . 0
  43. 1 579 "002242" 579 1
  44. 1 580 ""         . 0
  45. 1 581 ""         . 0
  46. 1 582 ""         . 0
  47. 1 583 "000972" 583 1
  48. 1 584 ""         . 0
  49. 1 585 ""         . 0
  50. 1 586 ""         . 0
  51. 1 587 ""         . 0
  52. 1 588 ""         . 0
  53. end
  54. format %tmCCYY-NN All_date
  55. format %tmCCYY-NN Est_date
复制代码

板凳
黃河泉 在职认证  发表于 2018-9-5 08:52:07
沧觋 发表于 2018-9-5 07:29
比如说我egan tag = tag(security_id), 就是说我需要从tag==1开始替换,但是只替换前12个月,资料应该看起来 ...
1. 请用回复!2. 你前面讲的我看得懂,但你还是没解释"只替换前12个月"是什么意思?

报纸
沧觋 发表于 2018-9-5 15:21:25
黃河泉 发表于 2018-9-5 08:52
1. 请用回复!2. 你前面讲的我看得懂,但你还是没解释"只替换前12个月"是什么意思?
每一个Fundcd如果对应的tag是1的话,就替换Est_date为All_date,替换它的前12个月。例如当Fundcd = 1,第一个tag =1 时候,All_date是2006年3月,替换Est_date = All_date = 2006-03,以及前11项,直到obs3,2005-03为止。保持其他没有被替换的项和原来一样,仍然缺失。

地板
沧觋 发表于 2018-9-5 15:21:29
黃河泉 发表于 2018-9-5 08:52
1. 请用回复!2. 你前面讲的我看得懂,但你还是没解释"只替换前12个月"是什么意思?
每一个Fundcd如果对应的tag是1的话,就替换Est_date为All_date,替换它的前12个月。例如当Fundcd = 1,第一个tag =1 时候,All_date是2006年3月,替换Est_date = All_date = 2006-03,以及前11项,直到obs3,2005-03为止。保持其他没有被替换的项和原来一样,仍然缺失。

7
黃河泉 在职认证  发表于 2018-9-5 15:29:37
沧觋 发表于 2018-9-5 15:21
每一个Fundcd如果对应的tag是1的话,就替换Est_date为All_date,替换它的前12个月。例如当Fundcd = 1,第 ...
现在了解了,我帮你问问!

8
沧觋 发表于 2018-9-5 22:29:12
黃河泉 发表于 2018-9-5 15:29
现在了解了,我帮你问问!
谢谢老师,我已经想到了解决方法了。

gsort Fundcd - All_date
by Fundcd: gen spell = sum(!missing(Est_date))
gsort Fundcd spell -All_date
by Fundcd spell: replace Est_date = All_date if inrange(_n, 2, 13)
sort Fundcd All_date

9
黃河泉 在职认证  发表于 2018-9-6 08:00:59
沧觋 发表于 2018-9-5 22:29
谢谢老师,我已经想到了解决方法了。

gsort Fundcd - All_date
请也看看:https://www.statalist.org/forums ... up-to-certain-point

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

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