假设我有一个SAS数据步骤,我X从它的平均值中减去每个观察值(比方说,我只有变量):
data tmp;
set tmp;
x = x-2;
run;
Run Code Online (Sandbox Code Playgroud)
让我们说平均值并不总是2,我有另一个脚本创建一个包含一行的文本文件,其中包含:
x = x-2;
Run Code Online (Sandbox Code Playgroud)
现在,问题是,有什么方法可以让我有类似的东西:
data tmp;
set tmp;
load text_file;
run;
Run Code Online (Sandbox Code Playgroud)
要做与第一个数据步骤相同的事情?换句话说,我想要一个依赖于使用文件内容的解决方案(正如我在数据步骤中或在宏中显示的那样).
%INCLUDE会做你想要的.假设您的文本文件"c:\ mycode.sas"具有该行
x=x-2;
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
data tmp;
set tmp;
%include "c:\mycode.sas";
run;
Run Code Online (Sandbox Code Playgroud)
我注意到这是一个非常非常糟糕的方法,但这就是你要求的.
如果我想从x中减去x的平均值(标准化数据),我要么使用PROC STDIZE,要么这样做:
proc means data=tmp;
var x;
output out=x_mean mean=x_bar;
run;
data want;
set tmp;
if _n_ = 1 then set x_mean;
x=x-x_bar;
run;
Run Code Online (Sandbox Code Playgroud)
或者,PROC STDIZE(包含在SAS/STAT中):
proc stdize data=tmp out=want_std method=mean;
var x;
run;
Run Code Online (Sandbox Code Playgroud)