楼主: Bontique
1054 2

如何skip a word in a long character word [推广有奖]

  • 0关注
  • 1粉丝

本科生

69%

还不是VIP/贵宾

-

威望
0
论坛币
1601 个
通用积分
79.9543
学术水平
1 点
热心指数
8 点
信用等级
0 点
经验
3481 点
帖子
70
精华
0
在线时间
56 小时
注册时间
2012-3-30
最后登录
2022-2-14

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
比如说我有一个宏变量 &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...
求高手指教`谢谢!

二维码

扫码加我 拉你入群

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

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

关键词:Character word long ACT Dictionary character 如何

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

使用道具

藤椅
Bontique 发表于 2015-6-29 09:44:15 |只看作者 |坛友微信交流群
感谢楼上的思路和提点~么么哒~

大家还有其他思路不?

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

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 09:19