首页 > 解决方案 > 如何在sas中生成相同的随机变量

问题描述

我想创建一个变量want,它是一个随机生成的数字,遵循 dataset 的均匀分布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;

标签: sas

解决方案


要在每个观察值上设置相同的值,请使用 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;

推荐阅读