【问题标题】:Loading SAS code from text file inside a data step从数据步骤中的文本文件加载 SAS 代码
【发布时间】:2013-04-17 03:53:50
【问题描述】:

假设我有一个 SAS 数据步骤,我从其平均值中减去每个观察值(例如,我只有变量 X):

data tmp;
  set tmp;
  x = x-2;
run;

假设平均值并不总是2,我有另一个脚本,它创建一个包含一行的文本文件,其中包含:

x = x-2;

现在的问题是,有什么方法可以让我拥有类似的东西:

data tmp;
  set tmp;
  load text_file;
run;

做与第一个数据步骤相同的事情?换句话说,我想要一个依赖于使用文件内容的解决方案(如我在数据步骤中或在宏中显示的那样)。

【问题讨论】:

    标签: sas


    【解决方案1】:

    %INCLUDE 会做你想做的事。假设您的文本文件 "c:\mycode.sas" 有这一行

    x=x-2;
    

    那么你可以这样做:

    data tmp;
    set tmp;
    %include "c:\mycode.sas";
    run;
    

    我注意到这是一个非常非常糟糕的方法,但这是你要求的。

    如果我想从 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;
    

    或者,PROC STDIZE(包含在 SAS/STAT 中):

    proc stdize data=tmp out=want_std method=mean;
    var x;
    run;
    

    【讨论】:

    • 谢谢乔!很好的答案;正是我想要的。基本上,文本文件不像“x = x-2”那么简单,并且是动态生成的SAS代码,因此在这种情况下这些过程可能对我不起作用,但是,对于std,我非常喜欢你的解决方案并将一定要使用它。
    猜你喜欢
    • 2015-04-20
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多