1

有几次,我需要在 SAS 中运行一个过程,然后保存输出变量以供另一个程序 (MATLAB) 访问。这很容易,例如:

proc genmod order=data;
    class X Y Z;
    output out= gmout1 prob = PRED;
    model count=X Y Z /dist=poi pred;
run; *mutual independence;
proc export data = work.gmout1
    outfile = "...\genmodout1.txt"
    dbms = csv replace;
run;

output out= gmout13 行中的将 proc genmod 导出的所有变量保存到名为 gmout1 的库表中。

我目前的需要是能够访问存储在 SAS 本身的 gmout1 中的一些数据。应该很容易,但我的搜索没有发现任何有用的东西。

4

1 回答 1

1

data使用该选项,您的数据集 gmout1 可以用作其他 procs 的输入。例如,如果您想打印这些:

proc print data=gmout1;
var _all_;
run;

您还可以使用set语句通过数据步骤(SAS 中的大多数编程发生在这里)对数据进行修改。例如,如果您有一个变量“fit”并且您需要将其重新编码为 x100,您可以这样做:

data gmout2; *creates new dataset gmout2;
set gmout1; *use the dataset gmout1;
new_fit = fit * 100;*creates new variable new_fit as 100 times fit;
run;

要将特定变量(或多个变量)导出到文本文件,您有多种选择。最简单的:

data _null_;
set gmout1;
file "c:\temp\myfile.csv" dlm=',' lrecl=32767 dsd;
if dimension="Value" and dimension2="Value";
put
variable1_numeric
variable2_character $
variable3_numeric
;
run;

我注意到您提到了矩阵 - 从技术上讲,基本 SAS 不使用矩阵,只有数据集(基本上是数据行)。SAS/IML 是矩阵语言;它的用法类似于 R,并允许使用通用的矩阵语法。

于 2013-02-21T07:10:29.153 回答