全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1661 2
2016-06-15
sas adv 130题中的第80题,用程序跑了下,确实是rc取值为low,但我不明白为什么,明明totalobs是大于10的呢,不应该是high吗?求大神指点!!
data prosale;
input sale;
datalines;
1
2
4
6
7
8
8
5
4
4
4
4
4
4
5
;
run;
%let rc=begin;
%macro test;
data out;
set prosale nobs=totalobs;
if totalobs>10 then do;
%let rc=high;
end;
else do;
%let rc=low;
end;
run;
%put rc=&rc;
%mend;
%let rc=before execution;
%test

二维码

扫码加我 拉你入群

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

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

全部回复
2016-6-16 17:11:32
%let 语句属于宏语句,sas总是先执行宏语句,也就是说运行%test的时候,先运行%let rc=high, %let rc=low,%put rc=&rc。  然后运行data out;
set prosale nobs=totalobs;
if totalobs>10 then do;
end;
else do;
end;
run;
二维码

扫码加我 拉你入群

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

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

2016-6-16 19:54:20
狮子yanyang 发表于 2016-6-16 17:11
%let 语句属于宏语句,sas总是先执行宏语句,也就是说运行%test的时候,先运行%let rc=high, %let rc=low, ...
啊 这样啊,%test不是也是宏么
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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