如何使用不同的数据子集迭代运行SAS过程?

时间:2016-06-24 14:58:43

标签: sas

我想用现有SAS数据集的不同子集重复运行PROC REG。这是一个简单的示例数据集:

DATA data_main;
  input trt depth year response;
  cards;
1 1 2014 1.1
1 2 2014 1.2
2 1 2014 1.3
2 2 2014 1.4
1 1 2013 2.2
1 2 2013 2.4
2 1 2013 2.6
2 2 2013 2.8
;
run;

对于trt和depth的每个组合,我想运行此过程,其中current_data是trt和depth的当前组合:

PROC REG data = current_data;
    model response = year;
run;

我想捕获一个数据集或文本文件中所有迭代的回归系数和p值。

在我的实际数据集中输入和trt的级别数量要大得多,所以我试图避免手动编码每个组合。有人可以向我解释如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

考虑运行宏来迭代trtdepth的组合。嵌套循环下面迭代地重新创建current_data数据集,并在回归过程中使用它输出相应的结果表。根据需要调整所有组合的循环限制值范围:

%macro loopregression;
%do j = 1 %to 2;                 * TRT VALUES;
    %do i = 2013 %to 2014;       * DEPTH VALUES; 
        DATA current_data; 
            SET data_main;  
            if trt = &j;    
            if depth = &i;
        run;

        PROC REG data = current_data noprint outest=results&i&j;;
            model response = year;
        run;
    %end;
%end;
%mend loopregression;

%loopregression;