我寻求循环变量(可以包含在宏变量或数据集中)来创建一个宏变量,其中包含可以在回归中使用的交互项。这是一个例子。
假设原始变量位于宏变量中。
%let predictors = age sex bmi;
我试图遍历这些变量并创建一个我可以在回归中使用的宏变量。
在第一次迭代中,我们有年龄。我寻求创造:
% interactions = age sex bmi sex*age bmi*age
适合回归。
然后在下一次迭代中使用sex。
% interactions = age sex bmi age*sex bmi*sex;
等等。谢谢!
答案 0 :(得分:1)
许多SAS PROC的模型语句支持其语法。管道是所有交叉点,而@ 2将交互限制为2路。离开@为所有人。
proc glm data=sashelp.class;
class sex;
model age=sex|height|weight@2;
run;
quit;
答案 1 :(得分:0)
请注意确实如何使用此功能,但简单的%do
循环应该可以处理您的请求。
%macro test(predictors);
%local n i j ;
%let n=%sysfunc(countw(&predictors));
%do i=1 %to &n;
%let interactions=&predictors;
%do j=1 %to &n;
%if &i^=&j %then %let interactions=
&interactions %scan(&predictors,&i)*%scan(&predictors,&j)
;
%end;
%put &=i &=interactions;
%end;
%mend ;
%test(age sex bmi);
将此列表生成到日志中。
I=1 INTERACTIONS=age sex bmi age*sex age*bmi
I=2 INTERACTIONS=age sex bmi sex*age sex*bmi
I=3 INTERACTIONS=age sex bmi bmi*age bmi*sex