2017-05-26 36 views
0

声明感谢您花时间帮助我。如果/然后在SAS

基本上,我想生成一个从0到1,150,000次的随机数,如果生成的值低于.25,那么我希望它在该表中的该点显示0。如果它大于.25,我想保持原始值。

关于我应该在asterik部分使用什么技巧?该代码是在我使用的格式粘贴如下:

data rand_data; 
call streaminit(123); 

do i = 1 to 15000; 
    u = rand('Uniform'); 
    ***if u < .25 then do; 
    0 
    else*** 
    output; 
    end; 
    run; 
proc print data= rand_data; 
run; 
+0

如果你不是统计学家,我会咨询一个关于最终分布的问题,因为我不确定它会非常随机。即使是更新的RAND发行版,当你做这样的事情时,也会失去一些明显的随机性。如果你只是试图获得超过[0.25,1)的分布,那么有更好的方法来做到这一点。 – Joe

回答

1

这听起来像你要替换的值小于0.25为0

if u < 0.25 then u=0; 
output; 

相反,如果你想忽略值是小于0.25,则使OUTPUT语句有条件。

if u >= 0.25 then output; 

鉴于您的代码结构,这可能会导致少于15,000个观察值。

+0

非常感谢!我需要的输出仍然显示0.救生员! – indiansrulz