您好,我有2013年10月至2016年10月的时间序列数据表。我想绘制2013年10月至2014年11月,2014年10月至2015年11月,2015年10月至2016年11月期间的时间序列。在同一图表上分析任何季节性趋势。
我的想法是为每个子段创建单独的数据表,但在SAS中有更简单的方法吗?
这是我想绘制季节性数据表的一个例子。
答案 0 :(得分:1)
我认为这里的工作流程是添加一个表示年份的组变量,该变量对于您想要在一个绘图分组中绘制的所有行具有相同的值。
然后在所需的任何绘图类型中使用group
语句。类似的东西:
data stocks_years;
set sashelp.stocks;
date_year = intck('YEAR','01AUG1986'd,date,'c')+1986;
date_month= month(date);
run;
proc sgplot data=stocks_years;
vline date_month/response=close group=date_year stat=mean;
run;
这是一个示例,用于查看SASHELP.STOCKS数据集中三个股票的每月平均收盘价。当然这是一个糟糕的情节,但它应该让你知道它会是什么样子。这些不同颜色的线中的每一个来自不同的年份(aug-> jul被定义为一年,其中数字是年份的八月)。
答案 1 :(得分:0)
乔提供的引导给了我所需要的一切。以下是其他人参考的完整代码。
%macro Plot_Seasonal_Worse_TP(tbl_name, tp, cutoff_date);
/*tp = transition probability */
proc sql;
create table &tbl_name._trim as
SELECT *
FROM &tbl_name
WHERE asofdt > &cutoff_date;
run;
data &tbl_name._trim;
set &tbl_name._trim;
date_year = intck('YEAR','01NOV2013'd,asofdt,'c')+2014;
date_month= MOD(month(asofdt)+2, 12); /* move november and december of previous year to front of time series */
run;
proc sgplot data=&tbl_name._trim;
vline date_month/response=&tp group=date_year;
title &tbl_name (&tp);
run;
%mend Plot_Seasonal_Worse_TP;
输出也是如此。