全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1876 0
2018-03-19
新手求助,最近在跟着sas开发经典案例解析学sas,在看到以下宏实现模糊查找那部分理解不了,请各位帮忙解释一下,万分感激!(注释为书中所写,还是看不明白)

data city_inf;
length city $20.;
input id $ city @@;
cards;
1001 上海市南京路 1002 北京西城区 1003 上海市浦东区 1004 天津滨海新区 1005 北京东城区 1006 山东济南 1007 山东济宁 1008 北京市丰台区
;
run;

*通过宏indexs实现模糊查找;
%macro indexs/parmbuff;
/*通过宏系统的内部参数宏变量parmbuff接受传递的变量信息*/
%local num dsname;/*定义局部变量*/
%let num=2;
%let dsname=%scan(&syspbuff,&num);
/*把parmbuff的信息传递给宏系统内部宏变量syspbuff,scan函数实现查找功能*/
/*num=2,这里代表从syspbuff变量的第二个变量开始查找*/
%do %while(%quote(&dsname) ne %quote());
/*判断循环语句,如果变量dsname不为空*/
%if &num>2 %then %do;
or
%end;
index(%scan(&syspbuff,1),"&dsname")>0
/*从第一个变量查找,搜索dsname变量的位置*/
%let num=%eval(&num+1);
/*num变量加1*/
%let dsname=%scan(&syspbuff,&num);
/*从第num位置找,并负责给dsname*/
%end;
%mend;

data city;
set city_inf;
where %indexs(city,北京,上海,山东);
/*调用宏变量indexs,模糊查询city变量为北京、上海和属于山东的城市的数据*/
run;

proc print data=city;
run;


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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