楼主: MissFlorence
7574 15

[编程问题求助] Stata一直报错if not allowed 但是if语句没什么问题啊 求求各位大神 [推广有奖]

  • 0关注
  • 0粉丝

大专生

30%

还不是VIP/贵宾

-

威望
0
论坛币
481 个
通用积分
1.0001
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
58 点
帖子
8
精华
0
在线时间
89 小时
注册时间
2018-9-11
最后登录
2023-11-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

forvalues i=1/`maxnumber'{
*每只股票
display `i'
quietly egen time=group(month) if id==`i'
quietly sum time if id==`i'
quietly gen nofm=.
forvalues j=1/`r(max)'{
*每个月
scalar a=0
forvalues k=0/`r(max)-j'{
*每个月向后循环
scalar a=a+1 if id==`i'&time==`j+k'&in_r>=0
break if id==`i'&time==`j+k'&in_r<0
}
quietly replace nofm=a
drop a
}
quietly sum nofm
quietly replace Nofm=`r(max)'
quietly drop time nofm
}
keep Nofm id stkcd
duplicates drop id stkcd

运行后一直报错if not allowed,我实在不知道哪里出了问题。。。一直反复修改红色部分但也改不出来,求助各位了!
二维码

扫码加我 拉你入群

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

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

关键词:后循环

沙发
天南水北 发表于 2019-3-10 21:43:39 |只看作者 |坛友微信交流群
if有两种。写在前面的if是表示逻辑判断。写在后面的if是表示样本筛选。
你这里是逻辑判断,要写在前面。
stata可不认识倒装句。

使用道具

藤椅
MissFlorence 发表于 2019-3-10 21:49:52 |只看作者 |坛友微信交流群
天南水北 发表于 2019-3-10 21:43
if有两种。写在前面的if是表示逻辑判断。写在后面的if是表示样本筛选。
你这里是逻辑判断,要写在前面。
...
非常肥肠感谢您的耐心解答!我按照if在前改了之后报错变成了variable a not found,想请教一下这又是为什么呢?

使用道具

板凳
天南水北 发表于 2019-3-11 11:09:34 |只看作者 |坛友微信交流群
MissFlorence 发表于 2019-3-10 21:49
非常肥肠感谢您的耐心解答!我按照if在前改了之后报错变成了variable a not found,想请教一下这又是为什么 ...
删掉这句drop a。这句表示删除变量a。同时不需要删除标量a。而且你上面的sca a=0会直接删除之前的a。所以不需要专门写一句删除标量a的命令。

使用道具

报纸
天南水北 发表于 2019-3-11 11:09:42 |只看作者 |坛友微信交流群
MissFlorence 发表于 2019-3-10 21:49
非常肥肠感谢您的耐心解答!我按照if在前改了之后报错变成了variable a not found,想请教一下这又是为什么 ...
删掉这句drop a。这句表示删除变量a。同时不需要删除标量a。而且你上面的sca a=0会直接删除之前的a。所以不需要专门写一句删除标量a的命令。

使用道具

地板
天南水北 发表于 2019-3-11 11:09:56 |只看作者 |坛友微信交流群
MissFlorence 发表于 2019-3-10 21:49
非常肥肠感谢您的耐心解答!我按照if在前改了之后报错变成了variable a not found,想请教一下这又是为什么 ...
删掉这句drop a。这句表示删除变量a。同时不需要删除标量a。而且你上面的sca a=0会直接删除之前的a。所以不需要专门写一句删除标量a的命令。

使用道具

7
MissFlorence 发表于 2019-3-11 11:43:15 |只看作者 |坛友微信交流群
天南水北 发表于 2019-3-11 11:09
删掉这句drop a。这句表示删除变量a。同时不需要删除标量a。而且你上面的sca a=0会直接删除之前的a。所以 ...
同样非常感谢!经过您的指点,程序确实不报错了,但是也没有做到a累加然后储存在nofm矩阵里面的效果,请问该怎么修改才能使a在循环中累加然后储存在nofm里面呢?非常感谢您的细心解答。

使用道具

8
黃河泉 在职认证  发表于 2019-3-11 17:45:17 |只看作者 |坛友微信交流群
MissFlorence 发表于 2019-3-11 11:43
同样非常感谢!经过您的指点,程序确实不报错了,但是也没有做到a累加然后储存在nofm矩阵里面的效果,请问 ...
你是在练习还是在做研究之用?若是后者,请说明你要做什么?通常 "loop 总是最差的选择" (这句话跟很多人的认知可能不一样)?

使用道具

9
MissFlorence 发表于 2019-3-11 19:08:17 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-3-11 17:45
你是在练习还是在做研究之用?若是后者,请说明你要做什么?通常 "loop 总是最差的选择" (这句话跟很多人 ...
你好,我是想做每只股票收益率减去通胀大于零的最大连续月数。就是每只股票每个月对应一个收益率连续跑赢通胀的月数,然后算出这一支股票的收益率最长有多少个月跑赢了通胀,储存到一个矩阵里,再做后续处理。不知道我又没有表达清楚。

使用道具

10
黃河泉 在职认证  发表于 2019-3-12 06:33:38 |只看作者 |坛友微信交流群
MissFlorence 发表于 2019-3-11 19:08
你好,我是想做每只股票收益率减去通胀大于零的最大连续月数。就是每只股票每个月对应一个收益率连续跑赢 ...
发个代表性资料,并以资料说明,举例你要的东西,我帮你看看!
  1. 你若要问程序,永远附上相关资料;若附上资料,永远用 dataex 印出资料。
  2. 1.        先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。
  3. 2.        请参考说明https://bbs.pinggu.org/thread-5048204-1-1.html。
复制代码

使用道具

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

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

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

GMT+8, 2024-6-16 15:25