格式日期列何时“?”出现在同一列中

时间:2013-09-06 13:34:34

标签: sas

我有几个日期列,有些条目包含条目“?”和其他条目包含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;

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

1 个答案:

答案 0 :(得分: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;