2016-08-15 11 views
0

更新**私は比較的新しいSASです。日付変数を使用してループする問題があります。最も基本的なレベルでは、複数のデータセット(または反復連結)を繰り返し作成する必要があります。静的なデータセットを作成できますが、ループに問題があります。ここで動作するコードのブロックは複数の日付のSASループ

`
%myvar = '11Jul16'd;

 data shape_test; 

    set Analysis_set; 

    Where(dt_expctd_setmt >&myvar and dt_trd <= &myvar); 


    by dt_trd; 



IF B='.' Then B=0; 

IF I='.' Then I=0; 

IF S='.' Then S=0; 

B=sum(B); I=Sum(I); S=Sum(S); 

S_B= S-B; 

S_B_I=S-B+I; 

format B I S S_B S_B_I dollar12.0; 

drop dt_expctd_setmt; 

実行; `

私は、各日付の1つのデータセットを作成、または前に各日付を積み重ねるでしょう日付のリストをループしたいと思います。

私は心の中でこのようなものを持っていたが、適切に私はをループしようとしています日付ベクトルのi番目のエントリにアクセスすることはできません。私はこれが明確であると思います

%let date_var= the date column; 
Do i = 1 to length(%date_var); 

%macro PleaseWork(date_var); 

Data Project_name&date_var(i); 

set Analysis_set; 

Where(dt_expctd_setmt >&date_var(i) and dt_trd <= &date_var(i)); 

Code with all the math stuff (like above) 

Run; 

%mend 
End; 

を!あなたの助けをもう一度ありがとう!

+0

あなたのリストはどのような形式ですか? – david25272

+1

私はこの問題を見るのに苦労しています。いくつかのサンプルデータと期待される出力を含めることができますか? – Reeza

答えて

0

日付の一覧が表にある場合、その表を分析データと結合して、単一の問合せで結果を生成します。マクロロジックは不要です。

proc sql; 
    create table total_break_out as 
    select b.myvar As Date 
      , a.category_name AS Category 
      , sum(a.B) as B 
      , sum(a.I) as I 
      , sum(a.S) as S 
    from analysis_set a 
     , dateset b 
    where a.var1 > b.myvar 
     and a.var2 <= b.myvar 
    group by 1,2 
    ; 
quit; 
+0

ありがとうございます!私はsasのdatastepにこれを記述しなければならず、proc sqlは使用できないことが判明しました。 – robq429

+1

質問を更新して、あなたが持っている入力と必要な出力を明確にすることができます。また、procステップの代わりにデータステップを使用する必要がある問題についてはどうでしょうか。 – Tom

+0

データステップに関して、私のマネージャーの要件。再度、感謝します! – robq429