然后将这个观测中的几个变量通过call symput赋值给宏变量。如:call symput('preclose',preclose);将观测中变量preclose的值赋值给宏变量preclose
然后用stop语句退出对A的遍历。
然后想在新的数据集B中写入那几个导出的宏变量,并输出形成只有一条观测的数据集B。
程序如下:
(我知道要实现上面的功能根本可以不用宏,其他很简答的方法就可以实现,但是我就想这么做)
- data _null_;
- set a;
- if (某个条件) then do;
- call symput('preclose',preclose);
- call symput('zf',zf);
- call symput('pb',pb);
- stop;
- end;
- run;
- data yu.r;
- preclose=&preclose;
- zf=&zf;
- pb=pb;
- output;
- run;
在运行到第一个data步的时候,程序会报出如下错误:
data yu.r; preclose=&preclose;
ERROR: “新兴铸管”不是有效的 SAS 名称。
ERROR: “新兴铸管”不是有效的 SAS 名称。
ERROR: “新兴铸管”不是有效的 SAS 名称。
9 + zf=&zf; pb=&pb; output; run;
NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 YU.R 可能不完整。该步停止时,共有 0 个观测和 3 个变量。
WARNING: 数据集 YU.R 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.03 秒
CPU 时间 0.03 秒
其中 “新兴铸管”就是赋值给preclose的变量的值,但是sas好像将他认为是一个变量名,不知道为什么。
求各位大神指导,谢谢。



雷达卡






京公网安备 11010802022788号







