2017-03-16 87 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