请问在下面的程序中,如果我的目的是将dat1.dat dat2.dat dat3.dat中的全部观测导入到data new中的话,如果不加do until...end或do while...end,为什么只能导入这三个dat中的第一个观测呢?如果加的话,我发现data until加在infile指令之前和之后都是可以完整输出全部3*3=9个观测的,而data while必须加在infile指令之后,否则只能输出dat1.dat中的全部3个观测。这是为什么呢?
- /*此段用于生成dat1 dat2 dat3这三个raw data文件,不用看*/
- data a;
- input x y;
- cards;
- 1 11
- 2 22
- 3 33
- ;
- run;
- data b;
- input x y;
- cards;
- 4 44
- 5 55
- 6 66
- ;
- run;
- data c;
- input x y;
- cards;
- 7 77
- 8 88
- 9 99
- ;
- run;
- data _null_;
- set a;
- file dat1;
- put x y;
- run;
- data _null_;
- set b;
- file dat2;
- put x y;
- run;
- data _null_;
- set c;
- file dat3;
- put x y;
- run;
- /*raw data生成完毕*/
- /*用do until*/
- data new;
- do i = 1 to 3;
- nextfile="dat"||put(i,1.)||".dat";
- do until(lastfile);
- infile temp filevar=nextfile end=lastfile;
- input x y;
- output;
- end;
- end; stop;run;
- /*用do while*/
- data new;
- do i = 1 to 3;
- nextfile="dat"||put(i,1.)||".dat";
- infile temp filevar=nextfile end=lastfile;
- do while(lastfile=0);
- input x y;
- output;
- end;
- end; stop;run;
复制代码