0

日付を含む列がいくつかあり、一部のエントリには「?」というエントリが含まれています。その他のエントリには、MMDDYY10 の日付が含まれます。フォーマット。

後で日付を比較し、そのために機能するコードを持っていますが、欠落しているエントリと「?」エラーが発生し、観測が作成されます。

ここに私のインポートコードがあります:

 data WORK.esn_service                               ;
   %let _EFIERR_ = 0; /* set the ERROR detection macro variable */
   infile 'C:\Documents and Settings\richardg\Desktop\Sirius\esn_service.csv' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;
  informat DEACTIVATION_DATE best10. ;
  informat DEACTIVATION_REASON $35. ;
  informat REACTIVATION_DATE best10. ;
  format DEACTIVATION_DATE mmddyy10. ;
  format DEACTIVATION_REASON $35. ;
  format REACTIVATION_DATE mmddyy10. ;
  input

               DEACTIVATION_DATE 
               DEACTIVATION_REASON $
               REACTIVATION_DATE 

   ;
  if _ERROR_ then call symputx('_EFIERR_',1);  /* set ERROR detection macro variable */
  run;

2 つの日付列がエラーの原因です。後で日付を比較する必要があるため、ランダムな日付を選んで問題のセルを置き換えることはできません。

4

1 に答える 1

0

データのインポート方法に問題があります。列が文字変数になると、そのように動かなくなります。それを変更するには、新しい列を作成する必要があります。インポート方法を変更して数値として取り込むか、それぞれに新しい列を作成して強制的に数値にします。

データに (CSV ファイルで) MMDDYY10 が既に含まれている場合は、INFORMAT を使用する必要があります。INFORMAT は、SAS がデータを読み込む方法を制御します。

data WORK.esn_service                               ;
   %let _EFIERR_ = 0; /* set the ERROR detection macro variable */
   infile 'C:\Documents and Settings\richardg\Desktop\Sirius\esn_service.csv' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;
  informat DEACTIVATION_DATE mmddyy10. ;
  informat DEACTIVATION_REASON $35. ;
  informat REACTIVATION_DATE mmddyy10. ;
  format DEACTIVATION_DATE mmddyy10. ;
  format DEACTIVATION_REASON $35. ;
  format REACTIVATION_DATE mmddyy10. ;
  input

               DEACTIVATION_DATE 
               DEACTIVATION_REASON $
               REACTIVATION_DATE 

   ;
  if _ERROR_ then call symputx('_EFIERR_',1);  /* set ERROR detection macro variable */
  run;
于 2013-09-06T13:41:56.680 に答える