楼主: wsddzr
6925 7

SAS where 后面怎么用 [推广有奖]

  • 3关注
  • 1粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
3 点
热心指数
4 点
信用等级
0 点
经验
1035 点
帖子
62
精华
0
在线时间
158 小时
注册时间
2013-3-10
最后登录
2021-3-20

楼主
wsddzr 发表于 2013-5-15 09:39:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
是这样我需要把一个macro里面的input  FullList(形式为x1 x2 x3 x4)改为 x1^=. and x2^=. and x3^=. and x4 ^=.

于是我先写了个把前者转换为后者形式的code
%macro convertA(pound);
%let newlist2=%qsysfunc(scan(&pound,1,%str( )))^=.;
%let i=2;
%do  %while (%qsysfunc(scan(&pound,&i,%str( )))^= ) ;
%let newlist2=&newlist2 and %qsysfunc(scan(&pound,&i,%str( )))^=. ;
%let i=%eval(&i+1);
%end;
&newlist2
%mend convertA;

然后在后面的macro里的where里把它加上去
%let c=%convertA(&FullList);where %eval(c);这样写就不能work 不知道怎样才能让这个形式达到 where x1^=. and x2^=. and x3^=. and x4 ^=. ; 同样的效果谢谢大家了!!!!!!


二维码

扫码加我 拉你入群

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

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

关键词:Where HERE whe sysfunc Convert where

沙发
zhengbo8 发表于 2013-5-15 10:28:20
不要老是想到使用宏。
  1. where x1-x4 is not missing;
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

总评分: 论坛币 + 100   查看全部评分

藤椅
playmore 发表于 2013-5-15 10:32:29
where not (x1=. or x2=. or x3=. or x4=.)

这样也行啊,就是对整个逻辑表达式做非运算
然后你要做的就是把原宏变量的and改成or

当然楼上的方法最好了,你这个纯属折腾,呵呵
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

板凳
wsddzr 发表于 2013-5-21 04:09:07
zhengbo8 发表于 2013-5-15 10:28
不要老是想到使用宏。
谢谢 T T

报纸
wsddzr 发表于 2013-5-21 04:09:32
playmore 发表于 2013-5-15 10:32
where not (x1=. or x2=. or x3=. or x4=.)

这样也行啊,就是对整个逻辑表达式做非运算
确实是折腾
谢谢了 T T

地板
moyunzheng 发表于 2013-5-27 17:19:38
zhengbo8 发表于 2013-5-15 10:28
不要老是想到使用宏。
  1. data test;
  2. x1=1;x2=2;x3=3;x4=4;output;
  3. x1=1;x2=2;x3=.;x4=4;output;
  4. run;
  5. data test2;
  6. set test;
  7. where x1-x4 is not missing;
  8. /*log中显示:   WHERE (x1-x4) is not null;   
  9. 结果有两个观测*/
  10. run;
复制代码

7
zhengbo8 发表于 2013-5-27 21:59:03
moyunzheng 发表于 2013-5-27 17:19
楼主,要求的是不全为空,当然是两个观察。
若要判断某个不为空,确实这样写是不对的。

8
zhengbo8 发表于 2013-5-27 22:06:38
moyunzheng 发表于 2013-5-27 17:19
要达到你的要求,可以这样写:
  1. data test;
  2.         x1=1;x2=2;x3=3;x4=4;output;
  3.         x1=1;x2=2;x3=.;x4=4;output;
  4. run;
  5. data test2;
  6.         set test;
  7.         where (x1+x2+x3+x4) is not missing;
  8. run;
复制代码

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 00:54