格式化日期变量不起作用

时间:2018-07-01 22:51:56

标签: sas

我正在使用以下代码进行数据步骤。

data meme;
infile '/home/bronx.txt' dlm='09'x truncover firstobs=2;
length ADDRESS $12. DATE 8. GROSS 5. LAND 8. SALE 6. YEAR 4. ZIP 6.;
format DATE mmddyy10.;
input ADDRESS $ ZIP LAND GROSS YEAR SALE DATE;

run;

尽管如此,此错误始终会发生:

  

警告:已达到由ERRORS =选项设置的限制。此类型的其他错误将不会打印。

1 个答案:

答案 0 :(得分:2)

您似乎不了解SAS格式和信息的用途。

格式是用于将存储的值转换为文本的说明。要使用其他方法,您需要使用 INFORMAT 。因此,如果文件中的文本看起来像01/01/2016,那么您可能希望使用MMDDYY信息(或也许DDMMYY信息)。如果看起来像01JAN2016,那么您将要使用DATE信息。如果您希望打印时看起来像日期,则还应该应用许多日期格式之一。

您似乎还不了解LENGTH语句的工作原理。在LENGTH语句中,您需要指定变量的长度,而不是格式。 SAS变量的 LENGTH 是用于将值存储在数据集中的字节数。由于SAS对所有数字均使用64位浮点格式,因此对于数字,应使用8的长度。 (您可以使用更少的字节来存储数字,但这仅意味着SAS在写入数据集时会丢弃低位字节。)

您可以尝试其他类似方法:

data meme;
  infile '/home/bronx.txt' dlm='09'x truncover firstobs=2;
  length ADDRESS $12 ZIP LAND GROSS YEAR SALE DATE 8;
  format DATE mmddyy10.;
  informat DATE mmddyy.;
  input ADDRESS ZIP LAND GROSS YEAR SALE DATE;
run;