我想用现有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的级别数量要大得多,所以我试图避免手动编码每个组合。有人可以向我解释如何做到这一点吗?
答案 0 :(得分:1)
考虑运行宏来迭代trt
和depth
的组合。嵌套循环下面迭代地重新创建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;