SAS中文论坛

标题: 请帮忙帮我解释下语句的意思 [打印本页]

作者: shiyiming    时间: 2010-4-15 16:08
标题: 请帮忙帮我解释下语句的意思
data temp;
        cur_day=weekday(today());
        cur_month=put(today(),yymmn6.);
        first_day=compress(cur_month||'01');
        last_day=put(today(),yymmddn8.);
run;

data temp;
        set temp;
        retain countday 0;
        do while (first_day<=last_day);
                if weekday(input(first_day,yymmdd8.)) not in ('1' '7') then countday=countday+1;
                first_day=first_day+1;
        end;
run;

proc sql noprint;
        select countday into :countday from temp;
quit;

请帮我解释各句的意思  自己不全理解  谢谢了
作者: shiyiming    时间: 2010-4-15 20:09
标题: Re: 请帮忙帮我解释下语句的意思
第一个DATA STEP获取当前日期,计算本月的第一天
第二个DATA STEP计算本日是本月的第多少的工作日
PROC SQL创建宏变量,存储计算出的天数
用intck()也可以
[code:27bsiexb]data _null_;
        first_day=intnx('month',today(),0);
        last_day=today();
        count_day=ifn(1<weekday(first_day)<7,
                                        intck('weekday',first_day-1,last_day),
                                        intck('weekday',first_day,last_day));
        call symputx('countday',count_day);
run;
%put NOTE-*** countday=&countday ***;[/code:27bsiexb]
作者: shiyiming    时间: 2010-4-15 20:18
标题: Re: 请帮忙帮我解释下语句的意思
[code:1qznvb25]
data temp;
/*得到今天是星期几*/
cur_day=weekday(today());
/*得到今天所在的月份,月份格式yyyymm*/
cur_month=put(today(),yymmn6.);
/*今天所在月份的首日日期,日期格式yyyymmdd*/
first_day=compress(cur_month||'01');
/*今天日期,日期格式为yyyymmdd*/
last_day=put(today(),yymmddn8.);
run;

/*获取今天所在月的月初到今天为止的工作日数*/
data temp;
set temp;
retain countday 0;
do while (first_day<=last_day);
/*双休日不参与统计计数*/
if weekday(input(first_day,yymmdd8.)) not in ('1' '7') then countday=countday+1;
first_day=first_day+1;
end;
run;

proc sql noprint;
/*将工作日数赋给宏变量countday*/
select countday into :countday from temp;
quit;


/*==========================================================================*/
/*看了以上代码让我快吐血,绕了很多个圈子,实在看不下去了,一行程序就可以搞定的事情*/
/*                     我的等价程序已站内短信于你,楼主请注意及时查收                   */
/*==========================================================================*/




[/code:1qznvb25]
作者: shiyiming    时间: 2010-4-15 21:04
标题: Re: 请帮忙帮我解释下语句的意思
这个程序有些小问题,就是不太注意变量的属性。数字和字符混用。因为都是数字字符,所以在结果还没有大的问题。多了几个log notes 而已
作者: shiyiming    时间: 2010-4-16 08:36
标题: Re: 请帮忙帮我解释下语句的意思
谢谢大家的帮忙




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2