全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2167 2
2008-03-13

老师们帮忙看看该sas 宏错在哪里,运行总是出错!
谢谢!
%macro RR(delta,n1,n2,distr1,distr2,essai,report=1);
                                        
%global pow;                         
  data -null-;            
     call symput("seed ",date());
  run;
 Data depart;
    do numessai=1 to &essai;
       do pat=1 to %eval(&n1+&n2);
          if pat<=&n1 then do;
          Distr=rantbl(&seed,&distr1);
          group=1;
          end ;
        if pat> %eval(&n1) and pat <= %eval (&n1+&n2)
then do;
           Distr=rantbl(&seed,&distr2);
           group=2;
        end;
      output;
      end;
     end;
   Run;

proc freq data=depart(where=(group in (1,2))) noprint;
   by numessai;
   tables group * distr /cmh2 scores=ridit;
   output out=TRT-AB N LGRRC1;
run;

Data power1;
   set TRT-AB;
   if l-lgrrc1^=.;
   power=l-lgrrc1>=&delta;
   scenario="TRT-A/TRT-B";
Run;
proc univariate data=power1 noprint;
  by scenario;
  var power;
  output out =power2 n=n sum=rep;
run;

Data power3;
  length distr1 distr2 $ 30 scenario $ 20;
  merge power2;
  by scenario;
  lcl=100-100*Betainv(0.975,n-rep+1,rep)+0;
  ucl=100*Betainv(0.975,rep+1,n-rep)+0;
  lC="["|| compress (put(lcl,best4.))||"%;"|| compress (put(ucl,best4.))||"%"||"]";
  distr1=compress(symget("distr1")*100||"%");
  distr2=compress(symget("distr2")*100||"%");
  n1=symget("n1");
  n2=symget("n2");
  delta=symget("delta");
  simul=symget("essai");
  power=100*rep/n;
  call symput('pow',put(power,best4.1));
Run;

%if %eval(&report)=1 %then %do;

Title2
Proc report data= power3 headline headskip nowindows split ="@" ls=120;
  column("--" scenario simul delta power lc
    ("Expected sample size" "--" n1 n2)
    ("Expected rates" "--" distr1 distr2));
define scenario /order format=$18. left width=18 "Scenario";
define simul/display format=$5.center width=12 "N? of @ simulations";
define delta /display format=$5.center width=6"Delta";
define power/display format=4.1 center width=6"Power";
define lC/display format=$12.center width=12"95% cl of @ Power";
define n1/display format=$10.center width=12 "TRT-A";
define n2/display format=$10.center width=12 "TRT-B";
define distr1/display format=$12.center width=12 "TRT-A";
define distr2/display format=$12.center width=12 "TRT-B";
   compute after;
     line @31 108*"-";
   endcomp;
   fotnote "seed=&seed";
%end;
Run;
%mend RR;

二维码

扫码加我 拉你入群

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

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

全部回复
2008-3-13 19:26:00

data -null-

写错了, 应该是下划线 data _null_;

查看宏变量是否定义正确,可以用%put &macroname.

在log中看赋值情况

二维码

扫码加我 拉你入群

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

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

2008-3-13 23:22:00
唉,关于宏,我还很模糊,晕
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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