Я использую SAS 9.3 и пытаюсь создать график с использованием PROC SGPLOT, который (1) показывает только даты, содержащиеся в моем наборе данных, как последовательные даты (т. е. исключая выходные и праздничные дни), а (2) отображает полезную информацию о XAXIS (например, первый день месяца). Я могу сделать и то, и другое по отдельности, но я не могу понять, как это сделать вместе. В частности, параметры VALUE и TICKVALUEFORMAT кажутся отключенными, когда я использую параметр DISCRETE (я не вижу обсуждения этого в документации).
Итак, у меня есть 2 вопроса:
(1) Есть ли способ решить это взаимодействие между опцией DISCRETE и VALUES/TICKVALUES?
(2) Есть ли лучший способ сделать то, что я пытаюсь сделать?
(ИДЕАЛЬНО было бы построить переменные X и Y и использовать третью переменную в качестве меток для оси 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;
Следующее отображает даты как ДИСКРЕТНЫЕ точки: точки данных отображаются правильно, но команды 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;
Вот второй график: неправильные точки, но рабочая ось
Любые предложения будут тепло приветствоваться! Спасибо!