2017-12-29 77 views
0

は、私は次の形式を取り、日付の書式を定義したい:SAS変更の日付形式

/* partie B question 2*/ 
    data projet.Ophtalmo_new; 
    set projet.Ophtalmo_new (RENAME=(date_diagnostic=date_dia)) (RENAME= 
(date_examen=date_exa)); 
    date_diagnostic = input (date_dia, DDMMYY10.); 
    date_examen = input (date_exa, DDMMYY10.); 
    format date_diagnostic date_examen date9.; 
    run; 

しかし、それは私に次の構文エラー送信します:12JAN2010

私はこのコードを使用してみました

ERROR 22-322: Syntax error, expecting one of the following: un nom, une chaîne 
entre guillemets, ;, 
      CUROBS, END, INDSNAME, KEY, KEYRESET, KEYS, NOBS, OPEN, POINT, 
_DATA_, _LAST_, _NULL_. 

私はまだ初心者ですが、正常に動作するように管理することはできません。

答えて

0

私は問題がRENAMEであると信じています。一度だけ呼び出すことができます。これに

set projet.Ophtalmo_new (RENAME=(date_diagnostic=date_dia)) (RENAME= 
(date_examen=date_exa)); 

:この

変更

set projet.Ophtalmo_new (RENAME=(date_diagnostic=date_dia date_examen=date_exa)); 
1

は、データセットオプションの構文は、単一の括弧式です。 RENAMEオプションの構文は以下の通りです

data-set-name (... options ... rename=(...)); 

:あなたがしている状態なので

rename=(old-name-1=new-name-1 old-name-2=new-name-2 ...) 

だから、正しいset文が

set projet.Ophtalmo_new (RENAME=(date_diagnostic=date_dia date_examen=date_exa)); 

だろうrenameオプションが収まります初心者私はこのセクションを追加しました。

表示されているコードは、もともとdate_diagnosticdate_examenという名前の変数の入力を示しています。これらの変数が実際に開始する文字変数である場合、入力は文字からSAS日付(単に特殊な意味を持つ数字)に変換する必要があります。ただし、変数が既に希望のものと異なるフォーマットのSAS日付であった場合は、変数の書式を更新するだけで済みます(またはPROCステップで使用する書式を変更するFORMAT文を使用する必要があります)

data have; 
    x = '01-jan-2017'd; 
    format x ddmmyy10.; 
run; 

* demonstrate that the permanent format of x is ddmmyy10.; 
data _null_; 
    put x=; 
run; 

* demonstrate temporary formatting of variable during step; 
data _null_; 
    set have; 
    format x date9.; * modify the format temporarily during execution of data _null_; 
    put x=; 
run; 

* permanently change format of variable; 
* only the dataset metadata (or header data) changes, the entire data set is NOT rewritten; 
proc datasets nolist lib=work; 
    modify have; 
    format x date9.; 
run; 

* demonstrate that the permanent format of x has changed to date9.; 
data _null_; 
    set have; 
    put x=; 
run; 
0

日付の名前を変更して、それらの変数をINPUTステートメントで使用することはできません。それらは名前が変更され、もはや存在しないので、INPUT関数でdate_diaにアクセスしようとすると、すべての欠損値が最悪になります。

DATAおよびSET文で同じデータセット名を使用するという表記も使用しないでください。つまり、このステップが実行されると、元のデータは存在しなくなります。そのため、コードを修正する前に、いくつかのステップをバックアップして元のデータを再作成する必要があります。一般的に、これは、コードを修正しても元のデータが間違っていてもエラーがあると考えられるため、診断と修正が難しいエラーにつながります。

変更: 1.データステートメントの出力データセットの名前を変更します。 2. RENAMEデータセットオプションを削除します。 3. DROPステートメントを追加して、不要になった変数を削除します。

/* partie B question 2*/ 
data projet.Ophtalmo2; 
set projet.Ophtalmo_new; 

date_diagnostic = input (date_dia, DDMMYY10.); 
date_examen = input (date_exa, DDMMYY10.); 
format date_diagnostic date_examen date9.; 

drop date_dia date_exa; 
run; 
関連する問題