在SAS中读取宽度不等的数据集时遇到报错的解决方法咨询
问题原因
- 日期输入格式与实际数据完全不匹配:
Date1列你指定了ddmmmyy10.(适用于03Jan1950这类带月份缩写的日期),但实际传入的是01/03/1950这类斜杠分隔的纯数字日期,格式完全错位。 - 日月年/月日年格式匹配错误:你给
Date1、Date2指定了ddmmyy10.(日月年格式),但看第二行样本数据05/15/2000,第二个字段为15,显然是日期值,说明你的数据是月/日/年的结构,应该用mmddyy10.格式读取。 - 最后一列
Date的格式同样写反:该列实际是带月份缩写的日期格式,你却指定了ddmmyy9.,应该更换为date9.或者ddmmmyy9.格式。
修正后可运行代码
data ThreeDates; infile datalines; /* 修正三个变量的输入格式,匹配实际数据结构 */ input Date1 mmddyy10. Date2 mmddyy10. Date date9.; /* 可选:指定输出格式,避免直接显示SAS日期数值 */ format Date1 Date2 Date yymmdd10.; datalines; 01/03/1950 01/03/1960 03Jan1970 05/15/2000 05/15/2002 15May2003 10/10/1998 11/12/2000 25Dec2005 ; run;
验证说明
运行后可以执行proc print data=ThreeDates; run;查看输出,三个日期会按照指定的yymmdd10.格式正常显示,不会再出现缺失值或者报错。
内容的提问来源于stack exchange,提问作者tech bitz
相关产品推荐
相关产品推荐

