2017-05-26 82 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