假设我有 2 个数据集 A 和 B:
Data A;
input data $;
datalines;
A1
A2
A3
;
run;
Data B;
input data $;
datalines;
B1
B2
B3
;
run;
我想生成一个具有特定顺序的数据集,如下所示:
A1
B1
B2
B3
A2
B1
B2
B3
A3
B1
B2
B3
如何在没有 POINT= 的情况下通过数据步骤从数据集 A 和 B 中做到这一点?
我试过这个方法:
DATA WRONG_ANSWER;
SET A;
OUTPUT;
DO i = 1 to 3;
SET B;
OUTPUT;
END;
RUN;
结果是:
A1
B1
B2
B3
A2
看起来 B 的文件结束指示符终止了这个数据步骤。
我还尝试了另一种使用 POINT= 的方法,得到了正确的结果。但是,由于从 B 访问特定 obs 时需要大量 I/O 时间,这种方法非常慢:
DATA WRONG_ANSWER;
SET A;
OUTPUT;
DO i = 1 to 3;
SET B POINT=i; //this is the only different from above
OUTPUT;
END;
RUN;