SAS 无法识别日期格式
SAS not recognizing date format
我有以下字符日期格式:
"3/1990"
"4/1990"
"5/1990"
...
我尝试了以下代码:
data work.temps;
set indata;
newdate = input(strip(Date), MMYYSw.);
rename newdate = date;
run;
我不断收到以下错误消息:Informat MMYYSW was not found or could not be loaded.
您可能必须使用不同的信息格式来读取字符日期,以便 SAS 可以将它们解释为数字(因为 SAS 中的日期实际上是数值),然后将它们格式化为 MMYYS.
。
这已经过测试并且对我有用:
DATA temps;
FORMAT newdate MMYYS.;
SET indata;
newdate = INPUT(COMPRESS('01/'||date),DDMMYY10.);
RUN;
你指的是FORMAT,不是INformat。
您将使用带 PUT 功能的格式,对于 INPUT,您需要信息格式。
反正我没找到适合直接使用的格式,所以你需要做更多的事情:
data work.temps;
infile cards truncover;
input Date .;
newdate=MDY( scan(Date,1, '/'), 1, scan(Date,2, '/') );
cards;
3/1990
4/1990
5/1990
;
run;
SCAN 从字符串中获取第 N 个单词,MDY 从月、日和年创建 DATE。
上面的代码给出了该月的第一天。
用 anydtdte 试试这个:
data have;
input date .;
_date=input(compress(date,'""'),anydtdte.);
format _date MMYYs7.;
cards;
"3/1990"
"4/1990"
"5/1990"
;
run;
我有以下字符日期格式:
"3/1990"
"4/1990"
"5/1990"
...
我尝试了以下代码:
data work.temps;
set indata;
newdate = input(strip(Date), MMYYSw.);
rename newdate = date;
run;
我不断收到以下错误消息:Informat MMYYSW was not found or could not be loaded.
您可能必须使用不同的信息格式来读取字符日期,以便 SAS 可以将它们解释为数字(因为 SAS 中的日期实际上是数值),然后将它们格式化为 MMYYS.
。
这已经过测试并且对我有用:
DATA temps;
FORMAT newdate MMYYS.;
SET indata;
newdate = INPUT(COMPRESS('01/'||date),DDMMYY10.);
RUN;
你指的是FORMAT,不是INformat。 您将使用带 PUT 功能的格式,对于 INPUT,您需要信息格式。
反正我没找到适合直接使用的格式,所以你需要做更多的事情:
data work.temps;
infile cards truncover;
input Date .;
newdate=MDY( scan(Date,1, '/'), 1, scan(Date,2, '/') );
cards;
3/1990
4/1990
5/1990
;
run;
SCAN 从字符串中获取第 N 个单词,MDY 从月、日和年创建 DATE。 上面的代码给出了该月的第一天。
用 anydtdte 试试这个:
data have;
input date .;
_date=input(compress(date,'""'),anydtdte.);
format _date MMYYs7.;
cards;
"3/1990"
"4/1990"
"5/1990"
;
run;