全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5579 8
2011-10-23
我想做的事情是遍历数据集A,根据某个条件挑选出A中满足条件的观测(满足条件的观测肯定只有一个),
然后将这个观测中的几个变量通过call symput赋值给宏变量。如:call symput('preclose',preclose);将观测中变量preclose的值赋值给宏变量preclose
然后用stop语句退出对A的遍历。

然后想在新的数据集B中写入那几个导出的宏变量,并输出形成只有一条观测的数据集B。
程序如下:
(我知道要实现上面的功能根本可以不用宏,其他很简答的方法就可以实现,但是我就想这么做)



复制代码
现在的问题是,如果我从数据集A中赋值给宏变量的是数值型的变量,那么就能顺利的实现我想做的事情,但是如果我从数据集A中赋值给宏变量的是字符型的变量,那么就会出现问题,
在运行到第一个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好像将他认为是一个变量名,不知道为什么。

求各位大神指导,谢谢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-10-23 18:03:53
如果是字符型变量,在赋值的时候,要加 双引号,否则sas会以为是变量名。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-10-23 18:04:16
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-10-23 20:15:18
这个就不是专业范围了!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-10-23 21:52:05
YueweiLiu 发表于 2011-10-23 18:04
真是谢谢啊 一下子就解决了问题 万分感谢!

还想问一下...你是怎么知道的呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-10-23 22:14:25
邢不行 发表于 2011-10-23 21:52
真是谢谢啊 一下子就解决了问题 万分感谢!

还想问一下...你是怎么知道的呢?
这是最基本的东西吧。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群