SAS中是否有函数可实现年积日与日期的互转?
SAS日期与年积日互转的简洁函数实现
1. 年积日(1-365)转mm/dd/2020格式日期
直接用DATEJUL函数就能完成转换,完全不需要硬编码月份天数或写复杂条件判断:
- 核心逻辑:把2020年的年积日拼接成儒略日格式(2020000 + 年积日,比如年积日2对应2020002),
DATEJUL函数会自动将其转为SAS内部日期值,再通过格式指定显示样式。
示例代码:
data converted_dates; set your_dataset; /* 生成SAS内部日期值 */ sas_date = datejul(2020000 + day_num); /* 格式化为mm/dd/2020的样式 */ format sas_date mmddyy10.; run;
注:day_num是你数据集中代表年积日的变量;MMDDYY10.格式会自动输出带前导零的日期(如01/02/2020)。
2. 日期(如01/02/2020)转年积日
用DAYOFYEAR函数可直接获取对应日期的年积日整数:
- 注意:函数参数必须是SAS内部日期值,如果你的日期是字符型,需要先通过
INPUT函数转换。
示例代码:
情况1:日期为SAS内部日期值
data doy_calc; set your_date_dataset; /* 直接计算年积日 */ day_of_year = dayofyear(input_date); run;
情况2:日期为字符型(如'01/02/2020')
data doy_calc; set your_char_date_dataset; /* 先将字符日期转为SAS内部日期值 */ sas_date = input(date_char, mmddyy10.); /* 计算年积日 */ day_of_year = dayofyear(sas_date); run;
内容的提问来源于stack exchange,提问作者glico
相关产品推荐
相关产品推荐

