| 所在主题: | |
| 文件名: m3.rar | |
| 资料下载链接地址: https://bbs.pinggu.org/a-1151870.html | |
本附件包括:
|
|
| 附件大小: | |
|
我想实现样本配对,要求是这样的:在相同年度中找行业相同,业绩相近的配对样本组。最好的结果是行业代码1相同,配对样本组的roa在样本roa的0.9至1.1之间;如果未找到配对样本,放宽行业即使用行业代码2相同,roa要求如上;如果还是找不到,不要行业限制,仅要求roa;如果最终还是找不到配对样本,取同行业(行业代码1)样本与配对样本roa相差的绝对值最小的三个样本作为配对样本。 我是用do语句来做的,思路是先选一个样本,按年度与配对数据集合并,再在这个数据集中用if语句实现配对。附件中是一个样本已按年度合并后的数据集,各项数据:股票代码stkcd、行业代码indu1(制造业取前两位)、行业代码indu2(全部都取第1位)、roa。 配对过程是这样的:我试着编写了以下程序,但运行后发现:找到满足条件的样本后,程序并未转至结尾,而是顺序执行后面的语句,由于配对条件是一个比一个条件松,因此最终似乎只留下最后一个条件的配对结果。如何使程序在找到满足条件的样本后即结束?请高手指点。 data m4; set m3; if sindu=mindu and sindu1=mindu1 and0.9*roa1<=roa2<=1.1*roa1 then do; where sindu=minduand0.9*roa1<=roa2<=1.1*roa1; end; else if sindu~=mindu and sindu1=mindu1 and 0.9*roa1<=roa2<=1.1*roa1 then do; wheresindu~=mindu and sindu1=mindu1 and 0.9*roa1<=roa2<=1.1*roa1; end; else if sindu~=mindu and sindu1~=mindu1 and 0.9*roa1<=roa2<=1.1*roa1 then do;wheresindu~=mindu and sindu1~=mindu1 and 0.9*roa1<=roa2<=1.1*roa1; end; else do; where sindu=mindu and t1<4; end;/*t1是按roa差的绝对值排完序的序号*/ run; |
|
熟悉论坛请点击新手指南
|
|
| 下载说明 | |
|
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。 2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。 3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。 (如有侵权,欢迎举报) |
|
京ICP备16021002号-2 京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明