如何更改sas plot x轴顺序

时间:2016-09-19 16:17:45

标签: sas

我有一个如下数据集:

x          y
16:00      1
17:00      2
18:00      2
19:00      3
20:00      4
21:00      5
22:00      6
23:00      1
24:00      1
01:00      2
02:00      3
03:00      1
04:00      7
...

我想使用以下代码绘制x和y之间的关系。我希望我的x轴从16:00开始,到04:00结束。但是,使用下面的代码,x轴从00:00开始,到16:00结束。任何人都可以教我如何调整我的代码。 (我不想像以下顺序一样逐个输入订单=(" 16:00" ..." 04:00")。

PROC SGPLOT DATA = data;
SERIES X = x Y = y;
axis order=("16:00:00"t to "03:00:00"t by hour);
TITLE 'Plot';
RUN;

1 个答案:

答案 0 :(得分:1)

所以问题是数值X轴值不能乱序。在SAS 1am< 1<晚上11点。所以你不能昼夜不停,所以说。

解决方法是将时间值设为日期时间。也就是说,添加一天组件。然后你只显示时间部分。

data have;
informat x time5. y best.;
format x time5.;
input x y;
datalines;
16:00      1
17:00      2
18:00      2
19:00      3
20:00      4
21:00      5
22:00      6
23:00      1
24:00      1
01:00      2
02:00      3
03:00      1
04:00      7
;
run;

data have;
retain day 0;
set have;
format x_new datetime.;

/*Count Days*/
if x = "24:00"t then 
    day = day + 1;

x_new = dhms(day,hour(x),minute(x),second(x));
run;

proc sgplot data=have;
series x=x_new y=y;
xaxis valuesformat=tod5.;
run;

这里我正在寻找24小时标记来增加日数。然后创建一个新变量来保存日期+时间。

绘图时,告诉SAS使用仅显示时间部分的TODw.d格式。

这是我得到的produced graph