全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1747 3
2013-08-26
%let chara = A;
%let num = 2;

Data SetName;
input var1 var2 var3;
cards;
A 1 2 3
A 1 2 4
A 2 3 7
B 1 4 8
;
RUN;
proc SQL;
   create table SetName_ as
   select * from SetName
   where var1 = &chara and var2 = #
quit;

我i写的小程序类似这样的。
上面运行后,SetName_只有「A 2 3 7」一条观测,
如果我想数据集SetName_有SetName中前三条观测,即是var1 = A,但是我又不想改写「where var1 = &chara and var2 = &num」,应该怎么办?


好像表达很乱的样子,其实我就是想只改动宏变量的情况下,可以实现上面2个功能,有办法么?
二维码

扫码加我 拉你入群

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

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

全部回复
2013-8-26 16:18:00
%let chara = "A";
%let num = 1 2;

Data SetName;
input var1 $ var2 var3;
cards;
A 1 2 3
A 1 2 4
A 2 3 7
B 1 4 8
;
RUN;
proc SQL;
   create table SetName_ as
   select * from SetName
   where var1 = &chara and var2 in( &num);
quit;
二维码

扫码加我 拉你入群

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

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

2013-8-26 17:13:25
yoyo945 发表于 2013-8-26 16:18
%let chara = "A";
%let num = 1 2;
哇!宏变量可以同时等同2个值,可以这样用的啊?
那如果cards改为
cards;
A 1 2 3
A 1,2 2 4
A 2 3 7
B 1 4 8
;
这样咋办,因为我原本还能用模糊查找= =一改就不会用了。
我改宏变量也不行 %let num = 1 2 1,2;
二维码

扫码加我 拉你入群

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

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

2013-10-16 12:03:45
%let chara = "A";
%let num ="1" "2" "1,2";

Data SetName;
input var1 $ var2 $ var3;
cards;
A 1 2 3
A 1,2 2 4
A 2 3 7
B 1 4 8
;
RUN;
proc SQL;
   create table SetName_ as
   select * from SetName
   where var1 = &chara and var2 in( &num);
quit;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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