全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2323 15
2011-04-29
譬如这样一段程序
data test;
store="susan ' s home";
call symput('s', store);
run;


这样一段程序为什么不直接给s赋值 而是先赋值给store,然后通过call symput来给s赋值哪?? 这样做有什么好处?
二维码

扫码加我 拉你入群

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

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

全部回复
2011-4-29 23:00:39
这是创建宏变量,作为和别的的data step or macro 的接口!
二维码

扫码加我 拉你入群

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

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

2011-4-30 07:12:48
hamsik11 发表于 2011-4-29 22:08
譬如这样一段程序
data test;
store="susan ' s home";
call symput('s', store);
run;


这样一段程序为什么不直接给s赋值 而是先赋值给store,然后通过call symput来给s赋值哪?? 这样做有什么好处?
具体一点说 就是,使用call symput可以给一个variable赋值, 变成macro variable, 这个指事character型
如果你在后面使用
%put &s

系统返还给你的结果就是 : susan`s home
二维码

扫码加我 拉你入群

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

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

2011-5-2 01:29:28
就是尚有他用,虽然我不懂 宏变量
二维码

扫码加我 拉你入群

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

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

2011-5-6 17:41:58
提示: 作者被禁止或删除 内容自动屏蔽
二维码

扫码加我 拉你入群

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

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

2011-5-6 23:09:45
sas在执行程序前会先编辑。宏及其变量的编辑优先于data step,如果s的值在程序执行以前就可以确定,那么就可以直接定义s, %let s=susan ' s home
如果想要由data step运行过程中产生出一个宏变量,就需要用call symput. 否则sas编辑宏的时候data step 还没有被编辑,宏变量的值就不能被解析。具体到这个程序,直接定义就可以了,%let store=susan's home. 感谢大家给机会学习。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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