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;

两个日期列导致错误。我需要稍后比较日期,所以我不能随便选择一个随机日期来替换问题单元格。

4

1 回答 1

0

您对如何导入数据有疑问。一旦列是字符变量,它就会被卡住 - 您必须创建一个新列来更改它。要么更改导入方式以将其作为数字引入,要么为每个列创建一个新列以强制其为数字。

如果您的数据中已经包含 MMDDYY10(在 CSV 文件中),那么您需要使用 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 回答