我想创建一个变量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;
答案 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;