生成一个阴谋在SAS随机数值向量



我是SAS的新手,我学习了SGplot, Datalines, IML和randgen。我想简单地为一个简单的散点图生成一个随机数据。

/* declaring manually a numeric list */
data my_data;
input x y @@;
datalines;
1 1 0 8 1 6 0 1 0 1 2 5
0 3 1 0 1 0 1 4 2 4 1 0
0 0 0 1 1 2 1 1 0 4 1 0
1 4 1 0 1 3 0 0 0 1 0 1
1 0 1 1 2 3 0 2 1 4 2 6
2 6 1 0 1 1 0 1 2 8 1 3
1 3 0 5 1 0 5 5 0 2 3 3
0 1 1 0 1 0 0 0 0 3
;
run;


proc sgplot data=my_data;
scatter x=x y=y; 
run;

现在我想以类似的方式生成一个随机数向量,例如:

proc iml;
N = 94;
rands = j(N,1);
call randgen(rands, 'Uniform');  /* SAS/IML 12.1 */
run;

,然后将向量作为数据线传输,然后将其传递到SGplot中。有人能示范一下怎么做吗?

由于您想将其直接传递给datalines,因此在IML中使用submit和文本替换选项。这将rands作为Nx1向量传递到datalines语句中,允许您将其作为一行读取。

proc iml;
N = 94;
rands = j(N,1);
call randgen(rands, 'Uniform');  /* SAS/IML 12.1 */
submit rands;
data my_data;
input x y @@;
datalines;
&rands
;
run;
endsubmit;
quit;
proc sgplot data=my_data;
scatter x=x y=y;
run;

注意,你需要将N的大小加倍才能得到94,否则你将得到47。这是因为它在移动到下一行之前读取同一行上的每一对。例如:

1 2 3 4
x = 1 y = 2
x = 3 y = 4 

来源:将值传递给过程(Rick Wicklin)

最新更新