Date SAS:在同一变量中导入不同格式的日期
我正在尝试导入一个变量(称为bdate),其中包含以YYYYMM或YYYYMMDD格式表示的日期。 考虑到我必须导入许多具有相同问题的文件,我尝试创建自己的格式(称为date)throw PROC format语句Date SAS:在同一变量中导入不同格式的日期,date,import,sas,format,Date,Import,Sas,Format,我正在尝试导入一个变量(称为bdate),其中包含以YYYYMM或YYYYMMDD格式表示的日期。 考虑到我必须导入许多具有相同问题的文件,我尝试创建自己的格式(称为date)throw PROC format语句 PROC FORMAT; value date 0 - 999999 = [YYMMN6.] 1000000 - 99999999 = [YYMMDD10.]; run; 日志没有显示任何错误消息,但我自己的格式在尝试将其用于bdate变量导入时不起
PROC FORMAT;
value date
0 - 999999 = [YYMMN6.]
1000000 - 99999999 = [YYMMDD10.]; run;
日志没有显示任何错误消息,但我自己的格式在尝试将其用于bdate变量导入时不起作用:
data example;
infile ....;
informat bdate best10. ;
format bdate date10. ;
run;
如何解决此问题?您需要定义信息,而不是格式。格式用于显示数据,信息用于导入数据。很多内置的SAS日期格式都有相同的信息,反之亦然,所以在开始定义自己的日期格式之前,这种区别并不明显
PROC FORMAT;
invalue mydate
0 - 999999 = [YYMMN6.]
1000000 - 99999999 = [YYMMDD10.];
run;
data _null_;
do i = 201601,20160102;
j = input(i,mydate.);
put j yymmdd10.;
end;
run;
您需要定义信息,而不是格式。格式用于显示数据,信息用于导入数据。很多内置的SAS日期格式都有相同的信息,反之亦然,所以在开始定义自己的日期格式之前,这种区别并不明显
PROC FORMAT;
invalue mydate
0 - 999999 = [YYMMN6.]
1000000 - 99999999 = [YYMMDD10.];
run;
data _null_;
do i = 201601,20160102;
j = input(i,mydate.);
put j yymmdd10.;
end;
run;
为什么不先将其读入字符变量,然后根据长度应用正确的信息呢
data test ;
input chardate $ ;
if length(chardate)=6 then date=input(chardate,YYMMN6.);
else if length(chardate)=8 then date=input(chardate,YYMMDD8.);
format date yymmdd10. ;
put chardate= date= ;
cards;
201601
20160125
;
为什么不先将其读入字符变量,然后根据长度应用正确的信息呢
data test ;
input chardate $ ;
if length(chardate)=6 then date=input(chardate,YYMMN6.);
else if length(chardate)=8 then date=input(chardate,YYMMDD8.);
format date yymmdd10. ;
put chardate= date= ;
cards;
201601
20160125
;