SAS / IML:从多个矩阵创建数据集

时间:2011-02-15 02:24:45

标签: sas

假设我在IML中有许多矩阵。它们可以是数字或字符。我将如何从中创建单个SAS数据集?

我试过像

这样的东西
n = {1 2 3, 4 5 6};      /* 2 x 3 numeric */
c = {'a' 'b', 'c' 'd'};  /* 2 x 2 character */
dsvars = {n c};
create dat var dsvars;   /* should be a 2-obs, 5-variable dataset */
append;

但是这会将n和c转换成列向量并导出那些,这不是我想要的。我应该单独导出n和c并将它们合并到DATA步骤中吗?

1 个答案:

答案 0 :(得分:4)

当n和c是向量时,您的方法有效。当它们是矩阵时,有几种方法可以做到这一点。我喜欢使用CREATE FROM和APPEND FROM语法,并将数字和字符矩阵写入以后合并的数据集:

proc iml;
n = {1 2 3, 4 5 6};      /* 2 x 3 numeric */
c = {'a' 'b', 'c' 'd'};  /* 2 x 2 character */

nNames = "n1":"n3";
cNames = "c1":"c2";
create ndat from n[colname=nNames]; 
append from n;
create cdat from c[colname=cNames]; 
append from c;
quit;

data dat;
   merge ndat cdat;
run;
proc print;run;