全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2279 4
2017-03-11
各位大神,可以看一下我的程序哪里出错了吗?谢谢。并且如何修改?我已经精疲力尽了···


%macro reg(code);
   data a1;
  set newall;
  if &code=code;
  run;

    data a1;
    set a1;
    num=totobs;
   %do i=1 %to (&num-60);
    if  (&num-&i)=60 then do;
     proc reg data=a1 outest=results noprint;
     model wkret=ret;
            end;
  %end;
  %do i= (&num-59) %to #
    if  (&num-&i)>30 and  (&num-&i)<60 then do;
     proc reg data=a1 outest=results noprint;
     model wkret=ret;
    end;
   
  %end;
  run;
%mend reg;





WARNING: 没有解析符号引用 NUM。
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: (&num-60)
ERROR: %TO 值(%DO I 循环中)无效。
ERROR: 宏 REG 将终止执行。









二维码

扫码加我 拉你入群

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

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

全部回复
2017-3-11 15:35:01
没有&num
你设多少?
这应该是移动窗口回归吧
二维码

扫码加我 拉你入群

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

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

2017-3-12 11:29:33
seanopry 发表于 2017-3-11 13:04
各位大神,可以看一下我的程序哪里出错了吗?谢谢。并且如何修改?我已经精疲力尽了···


你写的num那一行不对,你的意思是设立一个宏变量num等于数据集的总数,应该改为%let num=nobs,
二维码

扫码加我 拉你入群

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

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

2017-3-13 14:51:17
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: (&num-60):%eval(&num-60),宏过程里的运算整数的可以用%eval()有小数位的可以用%sysevalf();
宏变量设置可以用%let;
宏程序里不在data 步中的if then 语句最好加上%。
二维码

扫码加我 拉你入群

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

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

2017-3-14 00:07:38
谢谢各位,我的问题已经解决。
%macro reg;
                 data s1;
                 set try;
                %do i=1 %to 514;
                        data a2;
                        set s1;
                        if d1>=&i and d1<=&i+60 and ret^=. and wkret^=.;/*删去无效值*/
                        run;
                        proc reg data=a2 outest=results noprint;
                        model ret=wkret;
                        by code;
                    run;
                        data results;
                        set results;
                        d1=&i+60; /*从第61个开始输出值*/
                        beta=wkret;
                        keep  code d1 beta;
            run;
                        data try;
                        merge try(in=a) results;
                        by code d1;
                        if a;
                        run;
                       
                 %end;
               
       
%mend reg;
%reg
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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