全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1256 2
2015-06-26
比如说我有一个宏变量 &var, 它resolve出来是变量名的集合 var1 var2 var3 var4 var5.
然后有一行命令是 keep var1 var2 var4 var5;

能不能使用宏变量让不需要打出所有需要keep的变量名。也就是说,如何使用&var, 使出来的结果不含var3.

(by the way, 我知道drop var3这种形式,但问题是我用到keep那行命令里的数据集根本就没有var3. 其实直接keep &var也能出来正确的结果,但是SAS log会有warning。我想避免这样。)

补充:我得&var 是差不多这样来的:
      select name into: var separated by " "
      from dictionary.columns

希望我说清楚问题了ORZ...
求高手指教`谢谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2015-6-27 17:25:30
data two;
input var1 var2 var3 var4 var5;
cards;
1 2 3 4 5
;;;
%macro nn (var=,n= );
%let m=%sysfunc(countw(&n));

data one;
set two;
keep

%do i=1 %to &m;
%scan (&var, %scan(&n,&i))
%end;
;
run;


%mend;

options mprint;
%nn (var=var1 var2 var3 var4 var5, n=1 3 5)


楼主可以试试加一个keyword parameter    n=  
比如你输入n= 1 3 5   
macro就会keep var1 var3 var5
二维码

扫码加我 拉你入群

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

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

2015-6-29 09:44:15
感谢楼上的思路和提点~么么哒~

大家还有其他思路不?

想讨论看看有没“偷懒”的方法~
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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