1

proc boxplot と proc report の両方で BY ステートメントを使用して、BY 変数の各レベルのプロットとテーブルを作成しています。そのままで、コードはすべてのプロットを印刷し、次にすべてのテーブルを印刷します。By変数の各レベルのプロットとテーブルを印刷したいと思います(出力はプロットとテーブルの間で交互になります)。これを行う方法はありますか?

これは、プロットとテーブル用に現在持っているコードです-

proc boxplot data=study;
plot Lead_Time*Study_ID/ horizontal;
by Project_Name;
format Lead_Time dum.;
run;

proc report data=study nowd;
column ID Title Contact Status Message Audience Priority;
by Project_Name;
run;

ありがとうございました!!

4

3 に答える 3

1

値ごとに 1 回 procs を実行する場合、それは非常に簡単です。1 つのインスタンスのみを実行するマクロを作成し、それを使用proc sqlして各インスタンスの呼び出しを作成します。これは完全に動的であり、簡単に調整して、複数の変数、レベルなどの他のオプションを許可できます。

単一の値を指定すると、次のようになります。

*Macro that runs it once;
%macro run_reports(project_name=);
  title "Report for &project_name.";
  proc boxplot data=study;
   plot Lead_Time*Study_ID/ horizontal;
   where Project_Name="&project_name.";
   format Lead_Time dum.;
  run;

  proc report data=study nowd;
   column ID Title Contact Status Message Audience Priority;
   where Project_Name="&project_name.";
  run;
%mend run_Reports;

*SQL pull to create a list of macro calls;
proc sql;
select distinct cats('%run_Reports(project_name=',project_name,')')
  into :runlist separated by ' '
  from study;
quit;

&runlist.;

オンoptions symbolgen;にして、ランリストがどのように見えるかを確認するか、出力ウィンドウ (または 9.3 以降の結果ウィンドウ) を確認します。これを本番環境で実行している場合は、そのテーブルの生成を避けるためnoprintに to を追加してください。proc sql

于 2014-08-07T21:18:23.357 に答える