我不确定如何从一个大文件中执行此操作,但我会编写一个循环将代码拆分为 id 组,然后进行随机抽样。
%macro MACRO();
proc sql noprint;
select ID into :ID separated by " "
from Original_table
;
quit;
proc sql noprint;
select count (*) into :NumIDs
from Original_table
;
quit;
%let NumID = &NumIDs;
%do i = 1 %to &NumID %by 1;
%let loopID = %scan(&ID, &i, " ");
proc sql;
create table ID_&loopID. as
select *
from Original_table
where ID = &loopID.
;
quit;
proc surveyselect data = ID&loopID. method = SRS rep = 1
sampsize = 1 out = RandomID_&loopID.;
id _all_;
run;
proc append base = Id_Random_all
data = RandomID_&loopID.
;
quit;
%end;
%mend;
%MACRO();
然后,proc append 会将它们全部添加到一个文件中以查看。我确信有一种更简单的方法可以做到这一点,但这就是我的想法。