2011-09-29 87 views
2

我想知道是否可以对SAS中的数据集中的所有变量执行ttest(proc ttest)。可能通过循环数据?SAS中的变量执行测试

这是我目前有,但它无法正常运行:

data test; 
set work.wisc; 
array Avar(30) V1-V30; 
do variable = 1 to 30; 
    proc ttest data = work.wisc; 
    class Diagnosis; 
    var Avar(variable); 
    end; 
run; 

任何帮助深表感谢。谢谢!

回答

6

这样的事情可能会奏效。在循环中调用&&name&i.将引用每个变量名称。您可能需要在proc测试中进行一些调整,因为我不熟悉该功能。

/* -- Get the names of the variables --*/ 
proc contents data = work.wisc out = names noprint; run; 

/*--- Make macro vars needed ---*/ 
proc sql noprint; 
select 
    count(distinct name) into :name_count from names; 
select 
    distinct name into :name1 - :name9999 from names; 
quit; 

/*--- Strip spaces from name_count ---*/ 
%let name_count = &name_count.; 

%put There are &name_count. variables in the data set; 

/*--- Run the test for all variables ---*/ 
%macro testAll(); 
%do i = 1 %to &name_count.; 
    proc ttest data = work.wisc; 
     class Diagnosis; 
     var Avar(&&name&i.); 
    run; 
%end; 
%mend; 
%testAll(); 
+1

梦幻般的答案 - 我一直在寻找这一切。值得超过三个upvotes。 –