You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:36:04