2017-03-16 85 views
2

我明白,要選擇一個隨機抽樣選擇隨機樣本,我可以用SAS從數據集

proc surveyselect data = raw_data method = srs n=200000 out=sample_data; 
run; 

但是,有時我raw_data有記錄< 200000如果raw_data小,我就數喜歡只保留raw_data;如果它超過一百萬條記錄,我想隨機選擇一條200k條記錄。我應該怎麼做?

謝謝!

+0

RTM:你會發現選項全選 –

+0

@data_null_我認爲OP希望[N <的1000000:nsamp =全部] [N>的1000000:NSAM = 200000],因此它比全選稍微複雜一些。 – Joe

回答

1

只需創建一個宏變量n。您可以在下面執行此操作,或者如果您沒有理由不相信這些值,則可以使用dictionary.tablesproc contents來獲得計數而不實際計算所有行。

proc sql; 
    select 
    case when count(1) < 1000000 then count(1) else 200000 end 
    into :sampcount 
    from yourdataset 
    ; 
quit; 

proc surveyselect n=&sampcount. .... ; 
run; 
+0

謝謝!感謝sas,我們可以在if-else語句下調用宏... – vivi11130704