楼主: 眼睛花
2516 6

[原创博文] 【求组】SAS语句可不可以实现判断程序是否已执行? [推广有奖]

  • 6关注
  • 0粉丝

大专生

36%

还不是VIP/贵宾

-

威望
0
论坛币
1292 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
667 点
帖子
49
精华
0
在线时间
28 小时
注册时间
2010-12-20
最后登录
2016-5-3

楼主
眼睛花 发表于 2012-5-13 16:44:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大神们:
不知道SAS有没语句可以判断已执行的语句;
例如A段:Data a;set xxx;run;B段:Data b;set xxx;run;C段:Data c;set xxx;run;你有三段DATA步程序或者宏,
【如果Data a;set xxx;run;已执行,那么C段不执行;
如果B:Data b;set xxx;run;已执行,那么C段不执行;
如果A段和B段未执行,那么执行C段;】

大神们,SAS有语句可以实现这类型的操作么?
二维码

扫码加我 拉你入群

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

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

关键词:data步 Data Run Set 不知道 程序

沙发
sinksought 发表于 2012-5-13 18:07:15
是不是可以这样?假如A或者B数据集都不存在,那么才执行C?
data a;
......

data b;
.....

%macro test;
   %if %sysfunc(exist(A))=0 and %sysfunc(exist(B))=0 %then %do;
         data C;
             set xxxxxx;
            .......
         run;
    %end;
%mend;

%test;

另外可能还要判断虽然A或者B存在但是里面的观测数为0的情况。

藤椅
眼睛花 发表于 2012-5-13 19:34:10
sinksought 发表于 2012-5-13 18:07
是不是可以这样?假如A或者B数据集都不存在,那么才执行C?
data a;
......
我用你的方式尝试过,会报错;
%macro test;
   %if %sysfunc(exist(A))=0 or %sysfunc(exist(B))=0 %then %do;
data work.a;
        input name $ y$;
        datalines;
a 1
b 2
c 3
d 4
e 5
;
Run;
%end;
%mend;
%test;
ERROR:宏TEST生成了DATA步的CARDS(数据行),可能导致不正确的结果。DATA 步和宏将停止执行。
ERROR: 宏 TEST 将终止执行。

板凳
眼睛花 发表于 2012-5-13 19:44:25
大神:
  我还想提个问题,如果%sysfunc(exist(A))函数能正确使用,那岂不是我在每次运行程序过后,必须关掉SAS重新打开使用这段程序?

报纸
sinksought 发表于 2012-5-13 22:07:28
眼睛花 发表于 2012-5-13 19:34
我用你的方式尝试过,会报错;
%macro test;
   %if %sysfunc(exist(A))=0 or %sysfunc(exist(B))=0 %t ...
我的第二行 是 and 不是 or。第三行,我是data c 不是data a。 意思是数据集A和B都不存在时,才创建数据集C。和你的code的逻辑稍微不一样。
假如A被创建而B没有创建,你的%if 语句是判断为真的。会执行下面的创建work.a。而A已经存在了,可能这就是报error的原因。

地板
眼睛花 发表于 2012-5-14 19:50:00
sinksought 发表于 2012-5-13 22:07
我的第二行 是 and 不是 or。第三行,我是data c 不是data a。 意思是数据集A和B都不存在时,才创建数据集 ...
谢谢啊,因为着急写出代码,将逻辑改了。而且还没改对。是我糊涂了,A OR B存在,这个逻辑本来就想错了。程序已测,可用,非常感谢。

7
乾坤神龙 发表于 2012-5-15 14:49:10
很受启发!!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 23:47