请选择 进入手机版 | 继续访问电脑版
楼主: kaka179736
3384 5

关于if then循环的一个问题 [推广有奖]

  • 0关注
  • 0粉丝

小学生

35%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
33 点
帖子
2
精华
0
在线时间
10 小时
注册时间
2014-4-6
最后登录
2015-6-27

kaka179736 发表于 2014-12-9 15:12:30 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我现在有两个数据集,分别为A和B.
A数据集是
p
0.8
B为
method x y
new 1 2
old3 4
,需要实现功能是:
当p>1时候,得到一个新数据集B,只包含method=new的那一行,
当p<=1时候,得到一个新数据集B,只包含method=old的那一行.
请问该怎么实现,我是这么写的,但是没法实现
  1. %macro newb;
  2. data b1;
  3. set b;
  4. keep all;
  5. where method=new;
  6. run;
  7. data b2;
  8. set b;
  9. keep all;
  10. where method=old;
  11. run;
  12. %if a.p>1 %then %do;
  13. data b;
  14. set b1;
  15. run;
  16. %end;
  17. %if a.p<=1 %then %do;
  18. data b;
  19. set b2;
  20. run;
  21. %end;
  22. %mend;
复制代码




二维码

扫码加我 拉你入群

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

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

关键词:Then The Method Data 数据集 如何

Tigflanker 发表于 2014-12-9 15:26:03 |显示全部楼层 |坛友微信交流群
  1. data a;
  2. p=0.8;
  3. run;

  4. data b;
  5. input method $ x y;
  6. cards;
  7. new 1 2
  8. old 3 4
  9. ;run;

  10. data _null_;
  11.   set a;
  12.   call execute(cats('data b; set b; where method = "',ifc(a > 1,'new','old'),'";run;'));
  13. run;

  14. *Or;
  15. data _null_;
  16.   set a;
  17.   call symputx('p',p);
  18. run;

  19. data b;
  20.   set b;
  21.   where method = "%sysfunc(ifc(&p. > 1,new,old))";
  22. run;
复制代码

使用道具

kaka179736 发表于 2014-12-9 16:14:45 |显示全部楼层 |坛友微信交流群
Tigflanker 发表于 2014-12-9 15:26
非常感谢

使用道具

Eternal0601 发表于 2014-12-9 20:45:08 |显示全部楼层 |坛友微信交流群
data b;
        if  _n_=1 then set a;
        set b;
        where method=ifc(p > 1,'new','old');
run;

使用道具

Eternal0601 发表于 2014-12-9 20:46:03 |显示全部楼层 |坛友微信交流群
Eternal0601 发表于 2014-12-9 20:45
data b;
        if  _n_=1 then set a;
        set b;
错了,是if 哈哈
data b;
        if  _n_=1 then set a;
        set b;
        if method=ifc(p > 1,'new','old');
run;

使用道具

Eternal0601 发表于 2014-12-9 20:46:06 |显示全部楼层 |坛友微信交流群
Eternal0601 发表于 2014-12-9 20:45
data b;
        if  _n_=1 then set a;
        set b;
错了,是if 哈哈
data b;
        if  _n_=1 then set a;
        set b;
        if method=ifc(p > 1,'new','old');
run;

使用道具

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

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

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

GMT+8, 2024-4-17 07:39