如何用SAS PROC SGPLOT在同月日X轴散点图上按年份绘制两条回归线
解决步骤
1. 基于原始日期生成对齐后的X轴数值变量
可以通过两种方式实现不同年份同月日数据的X轴值对齐,任选其一即可:
- 方式1:用SAS内置
dayofyear()函数生成年度日序,取值范围1-366,对应当年的第几天 - 方式2:提取原始日期的月、日拼接为任意同一年的日期,保证两年同月日对应相同X值
运行以下数据步加工数据集:
data work.bothphase1_processed; set intern.bothphase1; * 方式1:生成年度日序变量,orig_date替换为你数据集里的原始日期变量名; day_of_year = dayofyear(orig_date); * 方式2(可选,更稳妥):统一拼接为2019年的日期,仅保留月日维度; * x_aligned = mdy(month(orig_date), day(orig_date), 2019); run;
2. 修改PROC SGPLOT代码完成绘图
以新生成的对齐变量作为X轴输入,同时给X轴设置月/日格式,即可同时满足「回归线同区间重叠对比」和「X轴显示月/日标签」的需求:
proc sgplot data=work.bothphase1_processed; * 若用方式2的x_aligned变量,此处x参数替换为x_aligned即可; reg x=day_of_year y=count / group=Year; label count="Calls Per Day" year="Year" day_of_year="日期"; * 强制X轴显示为MM/DD格式,隐藏年份信息; xaxis format=mmddyy5.; title "Comparison of EMS Calls per Day 1/1 - 3/31 in 2019 vs. 2020"; run;
原问题原因说明
- 此前用字符型月日变量作为X轴输入时,REG语句无法对字符型变量执行回归计算,因此不会生成回归线
- 直接用原始日期值绘图时,SAS日期是自1960年1月1日起计算的增量数值,2019年和2020年的同天日期数值差365,因此回归线会错位显示在图表两端
内容的提问来源于stack exchange,提问作者keherder
相关产品推荐
相关产品推荐

