如何在SAS中生成相同的随机变量

时间:2019-01-01 15:56:09

标签: sas

我想创建一个变量want,该变量是为数据集data均匀分布后随机生成的数字。我希望所有行的数字都相同。我尝试了以下方法:

data data; set data; want = ranuni(0) ; run;

但这为每一行提供了不同的值。

我也尝试生成一个宏变量,然后将该值传递给数据集,但是我在努力使其工作。谁能教我怎么做?

我尝试了以下操作:

%let want1= %ranuni(0) ;

我也尝试过:

%let want1= %eval ( ranuni(0) );

data data;
set data;
want = &want1;
run;

2 个答案:

答案 0 :(得分:2)

要在每个观察值上设置相同的值,请使用RETAIN语句来防止SAS在开始数据步骤的下一次迭代时重置该值。

data want;
  set have;
  if _n_=1 then myvar = ranuni(0) ; 
  retain myvar;
run;

要在宏代码中使用函数,您需要使用%SYSFUNC()宏函数。

%let mvar = %sysfunc(ranuni(0));

data want;
  set have;
  retain myvar &mvar ;
run;

答案 1 :(得分:1)

使用%sysfunc编码生成在DATA步骤中分配的固定随机数。

data data; 
  set data;
  want = %sysfunc(ranuni(0));
run; 

这里是SQL版本,使用该版本进行比较:

proc sql;
  alter table have add want num;
  update have set want=%sysfunc(ranuni(0));
quit;