全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1913 4
2018-10-18
悬赏 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应该可以解决问题吧。

二维码

扫码加我 拉你入群

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

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

2018-10-20 09:30:08
谢谢解答,问题已解决。不要在do-file里面运行,直接贴到命令行即可。但是求问大神们,为什么报这样的错误?
二维码

扫码加我 拉你入群

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

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

2018-11-1 15:30:09
懂了,是我写的问题,forvalue改成for,谢谢
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群