ORDER=DATA
将告诉 SAS 根据遇到值的时间对类变量进行排序。因此,如果1
值早于0
值,它将在比较中排在第一位。
例如:
data for_ttest;
call streaminit(7);
do group = 0 to 1;
do _n_ = 1 to 50;
score = rand('NORMAL',1,0.5)+group;
output;
end;
end;
run;
proc sort data=for_ttest;
by descending group;
run;
proc ttest data=for_ttest order=data;
class group;
var score;
run;
没有ORDER=DATA
,它的行为如您所见,但有了它, 1 是第一组。
您还可以结合ORDER=FORMATTED
格式。
proc format;
value groupf
1="Group 1 (Value=1)"
0="Group 2 (Value=0)"
;
quit;
proc ttest data=for_ttest order=formatted;
class group;
format group groupf.;
var score;
run;
中的标签PROC FORMAT
是无关紧要的,除了它们必须按字母顺序排序。不幸的是,该PRELOADFMT
选项在 中不可用PROC TTEST
,因此即使使用原始值,您也不能使用NOTSORTED
技巧来允许它工作(尽管如果您真的想要,PROC FORMAT
可以使用非打印字符来弄乱排序顺序)。