SAS从数据集中选择随机样本

时间:2017-03-16 14:34:17

标签: sas sas-macro

我明白要选择随机样本,我可以使用

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

但是,有时我的raw_data具有记录数< 200000.如果raw_data很小,我想保留raw_data;如果它超过一百万条记录,我想随机选择一条200k的记录。我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分: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;