全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4183 4
2016-08-23
%macro dailyreports;                                                                                                                    
%if &sysday=monday %then %do;                                                                                                           
proc print data=e;                                                                                                                     
format date worddate18.;                                                                                                               
title 'monday report';                                                                                                                  
%end;                                                                                                                                   
%else %if &sysday=tuesday %then %do;                                                                                                   
proc means data=e mean min max;                                                                                                         
class variety;                                                                                                                          
var quantity;                                                                                                                           
title 'tuesday report';                                                                                                                 
%end;                                                                                                                                   
%mend dailyreports;                                                                                                                     
data e;                                                                                                                                 
infile 'c:\users\administrator\desktop\jump.txt';                                                                                       
input id$ date mmddyy10. variety$ quantity;                                                                                             
run;                                                                                                                                    
%dailyreports;                                                                                                                          
run;  

先谢谢了!!   


二维码

扫码加我 拉你入群

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

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

全部回复
2016-8-23 13:05:09
可以先运行一下 %put &sysday; 看一下log里面宏变量的值;
应该可以看出来,宏变量的值是有大小写之分的,以今天为例,&sysday的值应该是Tuesday, 而不是tuesday.

BTW, 运行宏的时候,只需要%dailyreports就可以了,后面不需要分号,也不需要run;
二维码

扫码加我 拉你入群

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

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

2016-8-23 13:20:40
wwang111 发表于 2016-8-23 13:05
可以先运行一下 %put &sysday; 看一下log里面宏变量的值;
应该可以看出来,宏变量的值是有大小写之分的, ...
老师,你每次都能解决我的问题诶!哈哈
但是  我系统运行出来今天居然是周一!!!! 其实,以前还发现每次点开我的数据集属性,created and modified date 都是2004年,月份、日子和时间均和现在的一样,就是年份对不上……上次找了好久也没弄好这个问题~
二维码

扫码加我 拉你入群

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

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

2016-8-23 13:51:05
这应该是你的SAS的SID不是最新的,你的SID的有效期是在2004年左右,现在已经过了,所以SAS里的时间跟系统时间就不一样了。
重新定义一个新的宏变量,让时间等于你的系统时间就可以了:

%let date=%sysfunc(date(),date9.);
%put &date;

%let weekday=%sysfunc(weekday(%sysfunc(inputn(%sysfunc(date(),date9.),date9.))));
%put &weekday;

其中weekday的这个就是星期,1=Sunday, 2=Monday, 3=Tuesday...,
程序可以相应的改成%if &weekday=2 %then %do;  %else %if &weekday=3 %then %do;
二维码

扫码加我 拉你入群

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

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

2016-8-23 17:13:24
wwang111 发表于 2016-8-23 13:51
这应该是你的SAS的SID不是最新的,你的SID的有效期是在2004年左右,现在已经过了,所以SAS里的时间跟系统时 ...
嗯,老师,思路懂了,代码还要学习!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群