嗯,你之前把参数修改成n1的时候,宏里面还有一个参数未改成n1,所以出错,现在弄好了,你试试看
- data a;
- do i=1 to 10000;
- x=0+1*rannor(0);
- group=0;
- output;
- end;
- drop i;
- run;
- %macro test(n1);
- %do i=1 %to &n1.;
- proc surveyselect data=a out=b&i.
- method = srs
- n=53
- seed =0;
- run;
- data b&i;
- set b&i;
- group=&i.;
- run;
- data test&i.;
- set a b&i.;
- run;
- ods output ttests=p&i.;
- proc ttest data=test&i.;
- class group;
- var x;
- quit;
- ods output close;
- data p&i.;
- set p&i.;
- if Variances="Equal" then call symput("p&i.",Probt);
- run;
- %end;
- /*将每个样本与总体t检验的p值输出到同一个数据集中*/
- data p;
- retain count;
- %do j=1 %to &n1.;
- p_valute=&&p&j.;
- if p_valute<0.05 then count+1;/*计算p值小于0.05的样本个数*/
- output;
- %end;
- run;
- %mend;
- %test(10);
复制代码