楼主: SU==
1629 5

[时间序列问题] Stata日期筛选问题 [推广有奖]

  • 4关注
  • 0粉丝

硕士生

31%

还不是VIP/贵宾

-

威望
0
论坛币
607 个
通用积分
5.2038
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1142 点
帖子
55
精华
0
在线时间
202 小时
注册时间
2019-11-11
最后登录
2024-4-2

楼主
SU== 发表于 2020-10-15 18:06:26 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据是1981-2020年的每日K指数和I指数,根据两个指数判断舒适度等级R。在冬半年(9月23日~3月21日)使用K指数判断R,在夏半年(3月22日~9月22日)使用I指数判断R。
数据大致如下,年月日各一列,写if条件的时候感觉有点麻烦,不知道各位有没有什么好办法?

  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input double v byte(r3 r4 r) float(k i) str4 md
  4.    7 . . 1  -863  7.9 "0101"
  5. 1.7 . . 1  -740    4 "0102"
  6.    1 . . 1  -643  3.5 "0103"
  7. 3.7 . . 1  -972  1.4 "0104"
  8. 2.3 . . 1  -872 -1.4 "0105"
  9.    0 . . .  -376 -2.2 "0106"
  10.   .7 . . 1  -580  2.4 "0107"
  11. 2.7 . . 1  -728  4.9 "0108"
  12. 4.7 . . 1  -713  7.8 "0109"
  13.    7 . . 1  -852  7.9 "0110"
  14. 6.7 . . 1  -820    8 "0111"
  15.    5 . . 1  -703  9.1 "0112"
  16.    3 . . 1  -647  7.9 "0113"
  17. 5.7 . . 1  -710  9.1 "0114"
  18.    3 . . 1  -845 -1.1 "0115"
  19. 2.3 . . 1  -777  -.3 "0116"
  20. 1.7 . . 1  -684  2.3 "0117"
  21. 4.7 . . 1  -846  4.6 "0118"
  22. 3.3 . . 1  -811  2.2 "0119"
  23. 3.7 . . 1  -938 -1.2 "0120"
  24.    4 . . 1  -979 -2.4 "0121"
  25.    6 . . 1 -1085 -1.1 "0122"
  26.    1 . . 1  -708 -2.8 "0123"
  27.    2 . . 1  -792  -.4 "0124"
  28. 3.7 . . 1 -1013 -3.6 "0125"
  29.   .3 . . 1  -556 -2.4 "0126"
  30.    0 . . .  -343 -1.5 "0127"
  31.   .7 . . 1  -600  -.2 "0128"
  32. 2.7 . . 1  -802   .7 "0129"
  33.    1 . . 1  -621   .8 "0130"
  34.    2 . . 1  -676  4.1 "0131"
  35.   .7 . . 1  -527  6.7 "0201"
  36. 2.7 . . 1  -714  6.1 "0202"
  37.    4 . . 1  -830  3.7 "0203"
  38.    3 . . 1  -825    3 "0204"
  39.   .7 . . 1  -560  3.1 "0205"
  40. 3.7 . . 1  -697  6.4 "0206"
  41. 2.7 . . 1  -665    6 "0207"
  42.    6 . . 1  -714  9.6 "0208"
  43.    4 . . 1  -699  8.3 "0209"
  44.    4 . . 1  -685  8.3 "0210"
  45.    2 . . 1  -625  8.1 "0211"
  46. 2.7 . . 1  -624  9.5 "0212"
  47. 1.3 . . 1  -441  9.7 "0213"
  48.    4 . . 1  -583  9.6 "0214"
  49. 4.7 . . 1  -738  8.1 "0215"
  50.    1 . . 1  -618  2.1 "0216"
  51.    0 . . .  -305  4.9 "0217"
  52.    3 . . 1  -687  5.6 "0218"
  53. 3.7 . . 1  -839  1.4 "0219"
  54.    1 . . 1  -521  6.8 "0220"
  55.    0 . . .  -284  5.1 "0221"
  56. 3.7 . . 1  -725  6.6 "0222"
  57. 4.7 . . 1  -804  6.7 "0223"
  58. 4.7 . . 1  -861  7.1 "0224"
  59. 6.7 . . 1  -931    6 "0225"
  60. 4.3 . . 1  -873  4.8 "0226"
  61. 4.3 . . 1  -887  3.9 "0227"
  62.   .3 . . 1  -514  2.7 "0228"
  63.    0 . . .  -276  3.9 "0301"
  64.    0 . . .  -349  1.1 "0302"
  65. 3.7 . . 1  -672  7.4 "0303"
  66. 1.7 . . 1  -433 11.4 "0304"
  67. 4.3 . . 1  -596   11 "0305"
  68. 3.3 . . 1  -584   10 "0306"
  69. 1.7 . . 1  -415 11.9 "0307"
  70. 3.7 . . 1  -743  7.3 "0308"
  71. 3.7 . . 1  -647  8.3 "0309"
  72. 1.3 . . 1  -416 10.8 "0310"
  73. 4.7 . . 1  -592 10.7 "0311"
  74.    1 . . .  -337 12.5 "0312"
  75. 2.3 . . .  -376 14.2 "0313"
  76. 5.7 . . 1  -467 14.2 "0314"
  77. 3.3 . . 1  -477 12.4 "0315"
  78. 2.3 . . .  -399   13 "0316"
  79.    3 . . .  -409 14.2 "0317"
  80.    2 . . .  -345 14.2 "0318"
  81. 2.3 . . .  -321 15.6 "0319"
  82. 5.7 . . 1  -610 11.3 "0320"
  83.    1 . . .  -386 12.4 "0321"
  84.    5 . . 1  -526 13.1 "0322"
  85.    3 . . 1  -634  8.2 "0323"
  86. 6.3 . . 1  -629 11.3 "0324"
  87. 11.3 . . 1  -669 11.5 "0325"
  88.    3 . . 1  -524  9.9 "0326"
  89. 2.3 . . 1  -546 10.6 "0327"
  90.    1 . . 1  -461  9.9 "0328"
  91.   .7 . . 1  -411 10.8 "0329"
  92. 3.7 . . 1  -639  8.9 "0330"
  93. 2.3 . . 1  -604  7.3 "0331"
  94.    1 . . 1  -480  8.5 "0401"
  95. 2.7 . . 1  -576 10.1 "0402"
  96.   .7 . . 1  -443  8.9 "0403"
  97. 2.7 . . 1  -495 11.8 "0404"
  98. 3.7 . . 1  -436 15.1 "0405"
  99.    4 . . .  -385 15.9 "0406"
  100. 4.7 . . 1  -510 14.4 "0407"
  101.    2 . . 1  -488 11.7 "0408"
  102.    1 . . .  -317 14.6 "0409"
  103. 1.7 . . .  -301 16.9 "0410"
  104. end
复制代码




二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 不知道 指数和 年月日

沙发
冷冷静 发表于 2020-10-16 01:23:05 来自手机 |只看作者 |坛友微信交流群
SU== 发表于 2020-10-15 18:06
数据是1981-2020年的每日K指数和I指数,根据两个指数判断舒适度等级R。在冬半年(9月23日~3月21日)使用K指 ...
把月和日合成一个变量就方便很多了吧,比如0101到0322,然后再用forvalues写个循环就可以了。

使用道具

藤椅
SU== 发表于 2020-10-17 15:15:50 |只看作者 |坛友微信交流群
鼓捣了两天,写出的代码大致如下。其中r是风速v>3时的等级,r3、r4是风速v<=3时,冬半年与夏半年的等级,分别用K指数、I指数判断等级,因此r、r3和r4构成全集。
但运行结果存在问题:(1)r3和r4集合有重叠部分;(2)存在r3、r4、r均无值的样本;(3)等级r3、r4、r判断错误。不知道是不是循环语句写错了,还是其他导致的错误。给大家提供参考或教训,也请各位指点。

选取了一些结果错误的样本,发现日期md和条件if那里的好像都是写错的
  1. *r3,<=3,r无值,冬半年,K指数,part1&2
  2. forvalues md=0923/1231 {
  3.           replace r3=1 if(v<=3)&(r==.)&(k<-400)
  4.           replace r3=2 if(v<=3)&(r==.)&(-400<=k<=-300)
  5.           replace r3=3 if(v<=3)&(r==.)&(-300<k<=-100)
  6.           replace r3=4 if(v<=3)&(r==.)&(-100<k<=-10)
  7.           replace r3=5 if(v<=3)&(r==.)&(k>-10)
  8. }
  9. forvalues md=0101/0321 {
  10.           replace r3=1 if(v<=3) &(r==.)&(k<-400)
  11.           replace r3=2 if(v<=3)&(r==.)&(-400<=k<=-300)
  12.           replace r3=3 if(v<=3)&(r==.)&(-300<k<=-100)
  13.           replace r3=4 if(v<=3)&(r==.)&(-100<k<=-10)
  14.           replace r3=5 if(v<=3)&(r==.)&(k>-10)
  15. }

  16. *r4,<=3,r无值,夏半年,I指数
  17. forvalues md=0322/0922 {
  18.           replace r4=1 if (v<=3)&(r==.)&(i<14)
  19.           replace r4=2 if(v<=3)&(r==.)&(14<=i<17)
  20.           replace r4=3 if(v<=3)&(r==.)&(17<=i<=25.5)
  21.           replace r4=4 if(v<=3)&(r==.)&(25.5<=i<=27.5)
  22.           replace r4=5 if(v<=3)&(r==.)&(i>27.5)
  23. }
复制代码


使用道具

板凳
SU== 发表于 2020-10-17 15:22:25 |只看作者 |坛友微信交流群
冷冷静 发表于 2020-10-16 01:23
把月和日合成一个变量就方便很多了吧,比如0101到0322,然后再用forvalues写个循环就可以了。
谢谢您,按照您的提醒学习了循环语句,非常好用!
如果您有空能帮忙指点下刚写的语句就更好了,不胜感激:)

使用道具

报纸
SU== 发表于 2020-10-19 14:11:12 |只看作者 |坛友微信交流群
昨天成果,还是不得行希望路过的可以帮忙看看

  1. local x md
  2. if (v<=3)&(r==.){
  3. forvalues x=0322/0922{
  4.           replace r4=1 if (i<14)&(md==`x')
  5.           replace r4=2 if (14<=i<17)&(md==`x')
  6.           replace r4=3 if (17<=i<=25.5)&(md==`x')
  7.           replace r4=4 if (25.5<=i<=27.5)&(md==`x')
  8.           replace r4=5 if (i>27.5)&(md==`x')
  9. }
  10. }
复制代码

使用道具

地板
SU== 发表于 2020-10-19 20:50:35 |只看作者 |坛友微信交流群
SU== 发表于 2020-10-19 14:11
昨天成果,还是不得行希望路过的可以帮忙看看
问题已解决!!!是范围的问题。
错误示范:
  1. replace r4 if (14<=i<=17)&(md==`x')
复制代码
正确示范:
  1. replace r4 if (14<=i)&(i<=17)&(md==`x')
复制代码

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-12 03:27