楼主: rockfido
8918 14

[原创博文] 关于在MACRO中用IF语句的问题! [推广有奖]

  • 0关注
  • 0粉丝

博士生

29%

还不是VIP/贵宾

-

威望
0
论坛币
2774 个
通用积分
0.1841
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
2421 点
帖子
199
精华
0
在线时间
199 小时
注册时间
2008-8-29
最后登录
2021-4-23

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我一直没明白,到底在MACRO中用IF语句,啥时候需要写成%IF,啥时候不需要呢?

好像DATA STEP中的IF语句都不需要%,那PROC SQL还有PROC REG中的IF语句需要加%么?

比如在用PROC REG的时候,不同的条件语句下,用不同的MODEL STATEMENT,那么这个IF语句该怎么实现?试了用%或者不用,似乎都不成功。


非常感谢
二维码

扫码加我 拉你入群

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

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

关键词:Macro CRO acr Mac Data step

回帖推荐

crackman 发表于5楼  查看完整内容

data crackman; do i=1 to 100; x=ranuni(10); n=int(x*100); output; end; run; %b(20); %macro a(n); data c; set crackman; if n>=&n.; run; %mend a; %macro d(n); data d; set crackman; if n=50) %then %a(&n.); %else %d(&n.); %mend b; 比较潦草的写了一个 你看看其中IF 和%IF的区别吧

本帖被以下文库推荐

沙发
crackman 发表于 2010-4-13 22:16:25 |只看作者 |坛友微信交流群
除非在宏程序中,都不用%的

使用道具

藤椅
crackman 发表于 2010-4-13 22:19:07 |只看作者 |坛友微信交流群
除非在宏程序中,都不用%的
在宏程序中
如果你的IF THEN 所在的代码段是属于重复使用的不用%
如果是用来选择SAS宏程序流程的
要加%

使用道具

板凳
rockfido 在职认证  发表于 2010-4-14 01:24:28 |只看作者 |坛友微信交流群
3# crackman

可是PROC REG 或者DATA STEP不也是宏程序的一部分么。

使用道具

报纸
crackman 发表于 2010-4-14 13:37:27 |只看作者 |坛友微信交流群
data crackman;
do i=1 to 100;
x=ranuni(10);
n=int(x*100);
output;
end;
run;
%b(20);
%macro a(n);
data c;
set crackman;
if n>=&n.;
run;
%mend a;
%macro d(n);
data d;
set crackman;
if n<&n.;
run;
%mend d;
%macro b(n);
%if %eval(&n.>=50) %then %a(&n.);
%else %d(&n.);
%mend b;
比较潦草的写了一个
你看看其中IF 和%IF的区别吧
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

地板
醉_清风 发表于 2010-4-14 16:17:23 |只看作者 |坛友微信交流群
最好的办法还是看实例 比如楼上的
从来不需要想起 永远也不会忘记

使用道具

7
soporaeternus 发表于 2010-4-14 17:11:00 |只看作者 |坛友微信交流群
了解下MACRO的编译、运行机制吧
这个从这方面理解比较好
Let them be hard, but never unjust

使用道具

8
tanzhijun 发表于 2010-4-15 00:41:58 |只看作者 |坛友微信交流群
是不是可以简单点理解为:data部和proc之外的if都要加%?

使用道具

9
soporaeternus 发表于 2010-4-15 08:38:42 |只看作者 |坛友微信交流群
8# tanzhijun
简单点说,操作对象是data步中PDV的变量则用if
操作对象是SAS语句(任何语句)时,用%if
Let them be hard, but never unjust

使用道具

10
crackman 发表于 2010-10-18 15:39:37 |只看作者 |坛友微信交流群

使用道具

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

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

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

GMT+8, 2024-4-25 23:04