1

SAS 9.3 を実行しており、PROC SGPLOT を使用して、(1) データセットに含まれる日付のみを連続した日付として表示する (つまり、週末と休日を除く) プロットを作成しようとしていますが、(2) 使用可能な情報を表示しますXAXIS (たとえば、月の最初の日)。これらの両方を別々に行うことはできますが、両方を一緒にする方法がわかりません。具体的には、DISCRETE オプションを使用すると、VALUE および TICKVALUEFORMAT オプションが無効になっているように見えます (これについての説明はドキュメントにありません)。

だから私は2つの質問があります:

(1) DISCRETE オプションと VALUES/TICKVALUES の間のこの相互作用を解決する方法はありますか?

(2) 私がやろうとしていることを行うためのより良い方法はありますか?

(X 変数と Y 変数をプロットし、3 番目の変数を x 軸のラベルとして使用するのは完璧ですが、これを行う方法が見つかりません。)

これを示すサンプル コードを次に示します。週末/休日を除外する場合、コードは直線をプロットする必要があります (以下に生成されたプロットを添付しました)。

*Create Dataset of Weekdays, dropping some holidays;
data weekdays (where=(weekday~=1 and weekday~=7 and date~="01JAN1960"d));
format date date9.;
do i=0 to 100;
  date=i;
  weekday=weekday(date);
  year=year(date);
  month=year*100+month(date);
  output;
end;
drop i; 
run;

*Create line and data label;
data weekdays;
  set weekdays;
  line=_n_;
  format xlab $12.;
  by month;
  if first.month then xlab=put(date,monyy7.);
run;

以下は、日付を DISCRETE ポイントとしてプロットします。データポイントは正しくプロットされますが、VALUES および TICKVALUEFORMAT コマンドには影響がありません。

*Plot dates as discrete -- correct points, VALUES and TICKVALUEFORMAT have no effect;
proc sgplot data=weekdays;
  series x=date y=line;
  scatter x=date y=line;
  xaxis type=discrete DISCRETEORDER=DATA values=(3 31 60 91) TICKVALUEFORMAT=monyy7.;
run;

これが最初のプロットです: 正しい点、間違った軸

次のコードは同じですが、DISCRETE オプションが削除されているため、明らかに週末を含む日付軸としてプロットされますが、VALUE および TICKVALUEFORMAT オプションは機能します。

*Plot all dates as dates -- incorrect points, but VALUE and TICKVALUEFORMAT work;
proc sgplot data=weekdays;
  series x=date y=line;
  scatter x=date y=line;
  xaxis values=(3 31 60 91) TICKVALUEFORMAT=monyy7.;
run;

これが 2 番目のプロットです: 間違ったポイントですが、作業軸

どんな提案でも大歓迎です!ありがとうございました!

4

1 に答える 1