SASで文字列を日付に変換したいのですが、試しました:
data _null_;
monyy = '05May2013';
date = input(substr(strip(monyy),1,9),yymmdd.);;
put date=date9.;
run;
しかし、それはうまくいきませんでした。これはできますか?
Substrやstripは必要ありません。
input(monyy,date9.);
のようなフォーマット
date9.
または
mmddyy10.
テキストをsas日付に変換する際の入力コマンドには無効です。使用できます
Date = input( cdate , ANYDTDTE11.);
または
Date = input( cdate , ANYDTDTE10.);
変換用。
上記のように、簡単な答えは次のとおりです。
_date = input(monyy,date9.);
_
以下を追加します:
_put date=yymmdd.;
_
whyこれが機能する理由、およびあなたが機能しなかった理由は、SASにおける一般的な誤解が原因です。日付9。 INFORMATです。 INPUTステートメントでは、SASインタープリターに一連の変換コマンドを提供し、コンパイラーに送信して、テキストを正しい数値に変換します。これは、正しい場合は日付のように見えます。 FORMATが適用されます。FORMATは、数値(または文字)の表示にすぎません。したがって、YYMMDDを使用すると、INPUT関数ではなくINFORMATではなくFORMATを渡すことによってINPUT関数が混乱し、おそらく次のような有用なエラーが表示されます。
_Invalid argument to INPUT function at line... etc...
_
これはあなたに次に何をすべきかについて全く何も言わなかった。
要約すると、キャラクターの日付をYYMMDDとして表すためです。 SASでは、
date = input(monyy,date9.);
put date=YYMMDD10.;
_試す
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、date9。);
Input(char_val、worddate)を使用してWord形式に変換することを検討できます。
あなたはこのページでたくさん得ることができます http://v8doc.sas.com/sashtml/lrcon/zenid-63.htm
input(char_val,current_date_format);
Set char_val=date9.;
のように、表示時に任意の日付形式を指定できます。