全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3476 2
2016-07-06
单独的宏变量赋值,则不能直接进行计算,
%let x=5;
%let y=&x+1;
%let z=%eval(&x+1);
%put &x &y &z;
5  5+1  6
如果在宏里面为什么就可以进行计算
%macro test;
%let x=5;
data test;
x=&x.;
y=&x+1;
z=%eval(&x+1);
run;
%mend;
%test;
dataset test 里面会显示x=5         y=6      z=6
而且log里面没有字符转换的信息


二维码

扫码加我 拉你入群

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

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

全部回复
2016-7-6 17:02:33
由于%let定义的原因,%let y=&x+1是直接将&x+1这个式子定义给了y,如果要将结果定义给y 就需要像定义z那样定义y
二维码

扫码加我 拉你入群

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

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

2016-7-6 17:15:53
你的%macro中 x y z是data步数据集中的变量,不同于宏变量。

赋值宏变量的时候,传递的是数值1或者字符"1"的值(1)给宏变量,宏变量把1作为文本(并非数值型变量1或字符型变量"1")处理
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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