2016-03-07 158 views
0

我正在使用PROC SURVEYSELECT語句從一組整數中獲得隨機數。 SAS然後返回採樣整數,但按升序排列,我需要它們保持隨機順序。我怎麼會隨機混合SURVEYSELECT聲明的輸出,或者只是讓聲明不要排序?我似乎無法找到任何讓語句按照隨機選擇的順序輸出的選項。SAS proc surveyselect不排序輸出

下面的代碼:

proc surveyselect data=data noprint 
method=srs 
n=numOfSamps 
seed=123 
out=outputSet 
run; 

和往常一樣,在此先感謝!

+0

你的數據是什麼樣的? OUT =與DATA =的順序相同嗎? –

回答

1

如果您只是想隨機分類最終的分層樣本,您可以使用ranuni()proc sort

data data; 
    set data; 
    rn = ranuni(12345); 
run; 
proc sort data = data; by rn; run; 
+0

這是我發現的最簡單的解決方案,謝謝! – chtongueek

0

要生成x的整數大小n的隨機排列,可以使用PROC PLAN。我不知道這是否適合你的SRS,但是你沒有講完整個故事嗎?

proc plan; 
    factors x=10 of 100 random/noprint; 
    output out=x10; 
    run; 
    quit; 

enter image description here

0

這是SURVEYSELECT的默認設置,如果您有隻是一個單一的SRS。

data have; 
    call streaminit(7); 
    do _order = 1 to 1e6; 
    intnum = floor(rand('Uniform')*1e9); 
    output; 
    end; 
run; 


proc surveyselect data=have noprint 
method=srs 
n=10000 
seed=123 
out=outputSet; 
run; 

你可以從包括_ORDER變量看,沒有排序以任何方式 - 它仍然保留初始排序(並沒有什麼特殊之處,變量)。

現在,如果您正在使用上面代碼中使用數據集名稱所暗示的分層SRS(但您將其中的詳細信息留下),則會進行排序,您需要包含_ORDER變量或類似的東西,然後通過該變量重新排序以返回到您的原始順序。