如何合并同一数据集内的两列日期?SAS代码调试求助
SAS合并两列日期的解决方法
你用coalesce函数失败的核心原因是:这个函数仅支持数值型变量,而你的Date1和Date2是字符型日期字符串,SAS自动转换时会出错,最终返回缺失值。针对你的场景,分两种情况给出解决方案:
1. 直接合并字符型日期(保留原格式)
用专门处理字符型变量的coalescec函数,它会返回第一个非缺失的字符值:
data out1; set out; Test = coalescec(Date1, Date2); run;
2. 转换成SAS标准日期值(方便后续日期运算)
如果后续需要对日期做排序、差值计算等操作,建议先把字符型日期转成SAS数值型日期,再合并:
data out1; set out; /* 将字符日期转为SAS数值日期,anydtdte.能自动识别m-yyyy/mm-yyyy格式 */ date1_sas = input(Date1, anydtdte.); date2_sas = input(Date2, anydtdte.); /* 合并数值型日期 */ Test_sas = coalesce(date1_sas, date2_sas); /* 可选:将SAS日期转回你需要的字符格式,比如Jan-1999 */ Test = put(Test_sas, monyy7.); /* 也可用mmddyy10.得到01/01/1999格式,按需调整 */ /* 删除中间变量 */ drop date1_sas date2_sas; run;
内容的提问来源于stack exchange,提问作者NewUsr_stat
相关产品推荐
相关产品推荐

