如何在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
相关产品推荐
相关产品推荐

