楼主: 快乐学习丶
2262 5

[面板数据求助] 请教如何根据一个时间区间,生成一个区间内为1的虚拟变量 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

97%

还不是VIP/贵宾

-

威望
0
论坛币
72635 个
通用积分
24.3703
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
306 点
帖子
16
精华
0
在线时间
419 小时
注册时间
2018-5-17
最后登录
2026-1-7

楼主
快乐学习丶 发表于 2020-2-9 15:15:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
本人有一份日交易数据。此外,现在有一个回购区间,知道起始时间和截止时间,想将回购区间数据合并到日交易数据中,希望设置一个回购区间内为1,其他为0的虚拟变量。但是在操作过程中存在一些疑问。
1.时间有的地方对不上,回购区间的起始、截止日期和交易日期存在不对应的现象,导致merge的时候会出现无数据现象。
2.怎么生成区间内为1的数据不会。
请教stata版的各位老师和同学了。
日期区间数据如下:
----------------------- copy starting from the next line -----------------------
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long 证券代码 str6 区间 float day str9 day1
  4. 1 "起始"     . "."        
  5. 1 "截止"     . "."        
  6. 2 "起始" 20331 "2015Aug31"
  7. 2 "截止" 20453 "2015Dec31"
  8. 4 "起始"     . "."        
  9. 4 "截止"     . "."        
  10. 5 "起始" 21535 "2018Dec17"
  11. 5 "截止" 21900 "2019Dec17"
  12. 6 "起始"     . "."        
  13. 6 "截止"     . "."        
  14. 7 "起始"     . "."        
  15. 7 "截止"     . "."        
  16. 8 "起始" 21560 "2019Jan11"
  17. 8 "截止" 21925 "2020Jan11"
  18. 9 "起始"     . "."        
  19. end
  20. format %tdCCYY-NN-DD day
复制代码

------------------ copy up to and including the previous line ------------------
日交易数据如下:

----------------------- copy starting from the next line -----------------------
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long 证券代码 float day str9 day1 float t double(corr corr1) float(delay1 delay2 delay11 delay12)
  4. 2 20437 "2015Dec15" 232  -.07508226257066927  -.08043626495856418  .3188188 .3514094  .5621222 .56202435
  5. 2 20438 "2015Dec16" 233  -.07500052337700876  -.08036211379223249   .331554 .3635435  .5677243  .5676353
  6. 2 20439 "2015Dec17" 234  -.07617545729621655  -.08135266559652377  .3205806 .3524321  .5549797 .55489945
  7. 2 20440 "2015Dec18" 235  -.03903360826112616  -.04438077739938677 .29350755 .3258618 .55843353 .55833656
  8. 2 20639 "2016Jul04" 236  -.03964094429258676  -.04480733944474694  .3323508 .3622379  .5787528  .5786645
  9. 2 20640 "2016Jul05" 237  -.04574902273836179  -.05072177762190707  .3585479 .3863775  .5926044 .59250176
  10. 2 20641 "2016Jul06" 238  -.05903973917319677  -.06391235223340842  .3838527  .411895 .59452945  .5944338
  11. 2 20642 "2016Jul07" 239  -.05335531942103895  -.05818547485504246  .3558825 .3839779  .5912086 .59109885
  12. 2 20643 "2016Jul08" 240  -.02964617958757832  -.03469075517088436  .3380436 .3681585  .5833706  .5832436
  13. 2 20646 "2016Jul11" 241 -.023232142864489432 -.028431066826210914  .3460991 .3758401  .5838488   .583713
  14. 2 20647 "2016Jul12" 242  -.02525021146639929 -.030396555657224714  .3417679 .3713076 .57906204  .5789259
  15. end
  16. format %tdCCYY-NN-DD day
复制代码

------------------ copy up to and including the previous line ------------------
这里展示的时代码000002的数据,它的截止日期就不存在对应的交易日,导致merge的时候数据为空。


二维码

扫码加我 拉你入群

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

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

关键词:虚拟变量 including generated generate Starting

沙发
震震果实 发表于 2020-2-9 16:54:35
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long 证券代码 str6 区间 float day str9 day1
  4. 1 "起始"     . "."        
  5. 1 "截止"     . "."        
  6. 2 "起始" 20331 "2015Aug31"
  7. 2 "截止" 20453 "2015Dec31"
  8. 4 "起始"     . "."        
  9. 4 "截止"     . "."        
  10. 5 "起始" 21535 "2018Dec17"
  11. 5 "截止" 21900 "2019Dec17"
  12. 6 "起始"     . "."        
  13. 6 "截止"     . "."        
  14. 7 "起始"     . "."        
  15. 7 "截止"     . "."        
  16. 8 "起始" 21560 "2019Jan11"
  17. 8 "截止" 21925 "2020Jan11"
  18. 9 "起始"     . "."        
  19. end
  20. format %tdCCYY-NN-DD day
  21. format %9.0g day
  22. ren 证券代码 id
  23. ren 区间 q
  24. gsort id -q
  25. bys id:gen d_2=day[_n+1]
  26. keep if q=="起始"
  27. ren day d_1
  28. drop day1
  29. save cs,replace
复制代码

藤椅
震震果实 发表于 2020-2-9 16:57:29
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long 证券代码 float day str9 day1 float t double(corr corr1) float(delay1 delay2 delay11 delay12)
  4. 2 20437 "2015Dec15" 232  -.07508226257066927  -.08043626495856418  .3188188 .3514094  .5621222 .56202435
  5. 2 20438 "2015Dec16" 233  -.07500052337700876  -.08036211379223249   .331554 .3635435  .5677243  .5676353
  6. 2 20439 "2015Dec17" 234  -.07617545729621655  -.08135266559652377  .3205806 .3524321  .5549797 .55489945
  7. 2 20440 "2015Dec18" 235  -.03903360826112616  -.04438077739938677 .29350755 .3258618 .55843353 .55833656
  8. 2 20639 "2016Jul04" 236  -.03964094429258676  -.04480733944474694  .3323508 .3622379  .5787528  .5786645
  9. 2 20640 "2016Jul05" 237  -.04574902273836179  -.05072177762190707  .3585479 .3863775  .5926044 .59250176
  10. 2 20641 "2016Jul06" 238  -.05903973917319677  -.06391235223340842  .3838527  .411895 .59452945  .5944338
  11. 2 20642 "2016Jul07" 239  -.05335531942103895  -.05818547485504246  .3558825 .3839779  .5912086 .59109885
  12. 2 20643 "2016Jul08" 240  -.02964617958757832  -.03469075517088436  .3380436 .3681585  .5833706  .5832436
  13. 2 20646 "2016Jul11" 241 -.023232142864489432 -.028431066826210914  .3460991 .3758401  .5838488   .583713
  14. 2 20647 "2016Jul12" 242  -.02525021146639929 -.030396555657224714  .3417679 .3713076 .57906204  .5789259
  15. end
  16. format %tdCCYY-NN-DD day
  17. format %9.0g day
  18. ren 证券代码 id
  19. merge m:1 id using cs
  20. drop if _m!=3
  21. drop _m
  22. gen wanted=(day>=d_1 & day<=d_2)
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
快乐学习丶 + 5 + 5 + 5 精彩帖子
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 8  热心指数 + 8  信用等级 + 8   查看全部评分

板凳
黃河泉 在职认证  发表于 2020-2-9 17:45:05
感谢 Wouter Wakker 之建议:
  1. clear
  2. input long id str6 interval float day
  3. 1 "start"     .
  4. 1 "end"       .
  5. 2 "start" 20331
  6. 2 "end"   20453
  7. 4 "start"     .
  8. 4 "end"       .
  9. 5 "start" 21535
  10. 5 "end"   21900
  11. 6 "start"     .
  12. 6 "end"       .
  13. 7 "start"     .
  14. 7 "end"       .
  15. 8 "start" 21560
  16. 8 "end"   21925
  17. 9 "start"     .
  18. end
  19. format %tdCCYY-NN-DD day

  20. reshape wide day, i(id) j(interval) string
  21. rename day* *

  22. tempfile first
  23. save `first'

  24. * Example generated by -dataex-. To install: ssc install dataex
  25. clear
  26. input long id float day double corr float delay1
  27. 2 20437  -.07508226257066927  .3188188
  28. 2 20438  -.07500052337700876   .331554
  29. 2 20439  -.07617545729621655  .3205806
  30. 2 20440  -.03903360826112616 .29350755
  31. 2 20639  -.03964094429258676  .3323508
  32. 2 20640  -.04574902273836179  .3585479
  33. 2 20641  -.05903973917319677  .3838527
  34. 2 20642  -.05335531942103895  .3558825
  35. 2 20643  -.02964617958757832  .3380436
  36. 2 20646 -.023232142864489432  .3460991
  37. 2 20647  -.02525021146639929  .3417679
  38. end
  39. format %tdCCYY-NN-DD day

  40. merge m:1 id using `first', keep(3)

  41. gen wanted = inrange(day, start, end) & !missing(start)
  42. list, noobs sepby(wanted)
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
快乐学习丶 + 5 + 5 + 5 精彩帖子
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 8  热心指数 + 8  信用等级 + 8   查看全部评分

报纸
快乐学习丶 发表于 2020-2-9 18:54:13
黃河泉 发表于 2020-2-9 17:45
感谢 Wouter Wakker 之建议:
十分感谢您的帮助!问题得到了解决!又学到了新的技巧

地板
快乐学习丶 发表于 2020-2-9 18:54:24
震震果实 发表于 2020-2-9 16:57
十分感谢您的帮助!问题得到了解决!又学到了新的技巧

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

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