выполнение тестов над переменными в SAS - PullRequest
2 голосов
/ 29 сентября 2011

Мне было интересно, можно ли выполнить 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;

Любая помощь очень ценится. Спасибо!

1 Ответ

6 голосов
/ 29 сентября 2011

Нечто подобное может работать. Вызов &&name&i. в цикле будет ссылаться на каждое имя переменной. Возможно, вам придется внести некоторые изменения в рамках процедуры тестирования, так как я не знаком с этой функцией.

/* -- 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();
...