1

特定の曜日を取得するためにsasマクロプロセスでマクロ変数を作成する方法を知っている人はいますか?

sasマクロを実行するたびに、前週の水曜日の日付を取得したいと思います。

例えば ​​:

今日:2011年10月18日火曜日->今日マクロを実行すると、次のようになります:「2011年10月12日水曜日」

月曜日にマクロを実行した場合でも、「2011年10月12日水曜日」を取得したい

ありがとう、

4

3 に答える 3

4

これは。で実現できますintnx。次に例を示します(マクロではありませんが、アイデアが得られます)。

まず、いくつかのデータを生成します。

data dates;
 do d=0 to 13;
  date = '15oct2011'd + d;
  output;
 end;
 format date date8.;
run;

これにより、最新の水曜日が表示されます。'week.4'は、水曜日から始まる週の指示であることに注意してください。

data dates;
 set dates;
 wed=intnx('week.4',date,0,'beginning');
 format wed date8.;
run;

変数wedには、最新の水曜日の日付が含まれるようになりました。

于 2011-10-18T15:03:06.843 に答える
3

マクロを呼び出して最新の水曜日の日付を返す場合。(また、日付をマクロ変数に格納するだけの場合は、「&weekday;」ステートメントを削除してください。)

%Macro Get_Weekday(date);

 %Let weekday=%sysfunc(putn(
                 %sysfunc(intnx(week.4,&date,0,beginning)),weekdate.));
 &weekday;

%Mend Get_Weekday;

%Put Today is %sysfunc(putn(%sysfunc(today()),weekdate.)) 
  and the most recent Wednesday is %Get_Weekday(%sysfunc(today()));
%Put If Today was %sysfunc(putn(%eval(%sysfunc(today())-1),weekdate.)) 
  then the most recent Wednesday would be 
   %Get_Weekday(%eval(%sysfunc(today())-1));
于 2011-10-19T14:53:01.447 に答える
2

私はあなたの質問を「SASに現在の曜日に関係なく先週の水曜日の日付を返すようにするにはどうすればよいですか?」と解釈しました。

それが望ましい結果である場合は、2つのintnx呼び出しが必要です。1つは先週の日曜日に戻るための呼び出し(lastwk=intnx('week', today, -1);)、もう1つは先週の水曜日に進むための呼び出し(lastwed=intnx('week.4', lastwk , 1);)です。

より簡単な方法は、先週の初めに戻って結果に3を追加することですが、そのコードは意図的なオフセットというよりはハックのように見えます。

コード

data _null_;
    do i = -10 to 10;
        today="&SYSDATE9"d + i;
        lastwk=intnx('week', today, -1);
        lastwed=intnx('week.4', lastwk , 1);
        put today weekdate. '-->' lastwed weekdate.-l;
    end;
run;

ログ

      Sunday, October 9, 2011-->Wednesday, October 5, 2011
     Monday, October 10, 2011-->Wednesday, October 5, 2011
    Tuesday, October 11, 2011-->Wednesday, October 5, 2011
  Wednesday, October 12, 2011-->Wednesday, October 5, 2011
   Thursday, October 13, 2011-->Wednesday, October 5, 2011
     Friday, October 14, 2011-->Wednesday, October 5, 2011
   Saturday, October 15, 2011-->Wednesday, October 5, 2011
     Sunday, October 16, 2011-->Wednesday, October 12, 2011
     Monday, October 17, 2011-->Wednesday, October 12, 2011
    Tuesday, October 18, 2011-->Wednesday, October 12, 2011
  Wednesday, October 19, 2011-->Wednesday, October 12, 2011
   Thursday, October 20, 2011-->Wednesday, October 12, 2011
     Friday, October 21, 2011-->Wednesday, October 12, 2011
   Saturday, October 22, 2011-->Wednesday, October 12, 2011
     Sunday, October 23, 2011-->Wednesday, October 19, 2011
     Monday, October 24, 2011-->Wednesday, October 19, 2011
    Tuesday, October 25, 2011-->Wednesday, October 19, 2011
  Wednesday, October 26, 2011-->Wednesday, October 19, 2011
   Thursday, October 27, 2011-->Wednesday, October 19, 2011
     Friday, October 28, 2011-->Wednesday, October 19, 2011
   Saturday, October 29, 2011-->Wednesday, October 19, 2011
于 2011-10-19T17:28:15.837 に答える