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

如何在SAS散点图中将数值型年份与字符型月份拼接为X轴数值变量

解决SAS中拆分年份和月份拼接为日期变量绘制散点图的问题

方法1:先创建带日期变量的数据集

先通过DATA步将数值型年份和字符型月份合并为SAS日期变量(SAS日期本质是数值型,代表从1960年1月1日起的天数):

DATA hw9.q3_with_date;
    SET hw9.q3;
    /* 将字符型月份转为数字,根据你的月份格式调整输入格式:
       - 若为3字母缩写(如'Jan')用monname3.
       - 若为全称(如'January')用monname.
       - 若为中文月份需对应格式,比如zhmonth. */
    month_num = INPUT(arrivaldatemonth, monname3.);
    /* 拼接成年月的日期,取每月1号作为代表日期,替换arrivalyear为你的数值型年份变量名 */
    arrival_date = MDY(month_num, 1, arrivalyear);
RUN;

然后用新数据集绘制散点图,同时设置X轴的日期格式让显示更直观:

PROC SGPLOT DATA=hw9.q3_with_date;
    scatter Y=LeadTime X=arrival_date;
    /* 设置X轴显示格式,比如MONYY7.显示为'JAN2023',也可改用MMDDYY10.等格式 */
    xaxis format=MONYY7.;
RUN;

方法2:在PROC SGPLOT中直接计算日期变量

如果不想额外创建数据集,可直接在绘图过程中计算日期变量:

PROC SGPLOT DATA=hw9.q3;
    /* 直接计算日期变量,注意替换arrivalyear为你的数值型年份变量名 */
    arrival_date = MDY(INPUT(arrivaldatemonth, monname3.), 1, arrivalyear);
    scatter Y=LeadTime X=calculated arrival_date;
    xaxis format=MONYY7.;
RUN;

关键说明

  • SAS的日期变量是数值型,符合散点图对X轴变量的要求,设置xaxis format=只是改变显示样式,不改变变量本质。
  • 若你的字符型月份是数字字符串(如'01'),可直接用INPUT(arrivaldatemonth, 2.)转为数字,无需用monname类格式。

内容的提问来源于stack exchange,提问作者ShaneH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:30:58