我想在 SAS 中将字符串转换为日期,我试过:
data _null_;
monyy = '05May2013';
date = input(substr(strip(monyy),1,9),yymmdd.);;
put date=date9.;
run;
但它没有用。这可以做到吗?
我想在 SAS 中将字符串转换为日期,我试过:
data _null_;
monyy = '05May2013';
date = input(substr(strip(monyy),1,9),yymmdd.);;
put date=date9.;
run;
但它没有用。这可以做到吗?
格式如
date9.
或者
mmddyy10.
将文本转换为 sas 日期时对输入命令无效。您可以使用
Date = input( cdate , ANYDTDTE11.);
或者
Date = input( cdate , ANYDTDTE10.);
用于转换。
您不需要 substr 或 strip。
input(monyy,date9.);
如上所述,简单的答案是:
date = input(monyy,date9.);
加上:
put date=yymmdd.;
这行得通的原因,而你所做的却没有,是因为 SAS 中的一个常见误解。日期 9。是一个信息。在 INPUT 语句中,它为 SAS 解释器提供了一组翻译命令,它可以发送给编译器以将您的文本转换为正确的数字,一旦应用了正确的 FORMAT,它就会看起来像一个日期。格式只是数字(或字符)的可见表示。因此,通过使用 YYMMDD.,您将 INPUT 函数交给了 FORMAT 而不是 INFORMAT,从而混淆了它,并且可能得到了一个有用的错误,上面写着:
Invalid argument to INPUT function at line... etc...
这绝对没有告诉你下一步该做什么。
总之,将您的字符日期表示为 YYMMDD。在 SAS 中,您需要:
date = input(monyy,date9.);
put date=YYMMDD10.;
输入(char_val,date9.);
您可以考虑使用 input(char_val, worddate.) 将其转换为 word 格式。
您可以在此页面http://v8doc.sas.com/sashtml/lrcon/zenid-63.htm中获得很多信息
尝试
data _null_;
monyy = '05May2013';
date = input(substr(strip(monyy),1,9),date9.);
put date=date9.;
run;
此代码有助于:
data final; set final;
first_date = INPUT(compress(char_date),date9.); format first_date date9.;
run;
我个人在SAS上试过
input(char_val,current_date_format);
您可以在显示时指定任何日期格式,例如 setchar_val=date9.;