楼主: minisheep
1541 4

[编程问题求助] mata变量配对问题请教 [推广有奖]

  • 0关注
  • 0粉丝

博士生

47%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
5.3503
学术水平
1 点
热心指数
5 点
信用等级
1 点
经验
3297 点
帖子
210
精华
0
在线时间
393 小时
注册时间
2009-1-16
最后登录
2023-1-28

5论坛币


本人菜鸟一枚,最近遇到了编程问题。我想在mata里实现以下功能:
找到第3列与第11列(两列都是证券代码)相同的项,然后将对应于11列
行数的第13列元素(高管薪酬)赋值到对应于3列行数的第8列元素(空白),
以便于后续分析,程序如下:

forvalue j=1/3464{
    forvalue k=1/3464{
            do B[j,8]=B[k,13]; while (B[j,3]==B[k,11])  
        }
}

但是编译器一直提示错误:
nothing found where 'while' expected
r(3000)
不知是何原因和如何改正,谢谢。

最佳答案

伟轩 查看完整内容

第一、总觉得你的code写得很奇怪,Mata里貌似没有forvalue的循环(Stata里有forvalues的循环,Mata类似的只有for的循环),同时Stata里没有do...while...的循环(Mata里有do...while...的循环); 第二、你在Stata命令行里是怎么运行的,有没有先进入mata; 第三、error code为3000,表明是Mata编译错误。。。建议把全部code贴上来给大家看看; 第四、如果一定要使用Mata,建议你使用stata(cmd)的函数在Mata中调用merge命令处 ...
关键词:提示错误 高管薪酬 编译器 问题。
沙发
伟轩 发表于 2018-10-18 15:19:53 |只看作者 |坛友微信交流群
minisheep 发表于 2018-10-20 09:30
谢谢解答,问题已解决。不要在do-file里面运行,直接贴到命令行即可。但是求问大神们,为什么报这样的错误? ...
第一、总觉得你的code写得很奇怪,Mata里貌似没有forvalue的循环(Stata里有forvalues的循环,Mata类似的只有for的循环),同时Stata里没有do...while...的循环(Mata里有do...while...的循环);
第二、你在Stata命令行里是怎么运行的,有没有先进入mata;
第三、error code为3000,表明是Mata编译错误。。。建议把全部code贴上来给大家看看;
第四、如果一定要使用Mata,建议你使用stata(cmd)的函数在Mata中调用merge命令处理你的数据,或许会更加简便。

使用道具

藤椅
伟轩 发表于 2018-10-18 15:26:47 |只看作者 |坛友微信交流群
首先你这个不是Mata,在do文档中,Mata要以"mata:"开头,以"end"结尾;其次,和Mata不同的是,Stata是解释型的语言,没有编译过程,而是直接解释然后执行;
最后,直接merge应该可以解决问题吧。

使用道具

板凳
minisheep 发表于 2018-10-20 09:30:08 |只看作者 |坛友微信交流群
谢谢解答,问题已解决。不要在do-file里面运行,直接贴到命令行即可。但是求问大神们,为什么报这样的错误?

使用道具

报纸
minisheep 发表于 2018-11-1 15:30:09 |只看作者 |坛友微信交流群
懂了,是我写的问题,forvalue改成for,谢谢

使用道具

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

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

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

GMT+8, 2024-5-9 07:45