SAS日期导入问题

时间:2013-08-11 10:39:52

标签: date import sas

我正在尝试使用自定义代码将csv文件导入sas。以下是原始数据中的示例行。

Item,date,WKLY_QTY,WKLY_SALES
10001,01Apr12,3313,67536.16
10001,15Apr12,889,26577.66
10001,22Apr12,4543,65001.8
10001,29Apr12,2822,74522.02

我的SAS代码如下:

data LOtpt.Dummy2; 
infile "&InptPath.\Dummy2_CSV.csv" dsd dlm=','  FIRSTOBS=2; 
input Item date DATE7. WKLY_QTY WKLY_SALES; 
run;

我得到的结果如下:

Item    date  WKLY_QTY WKLY_SALES
10001   19084   .   3313
10001   19098   .   889
10001   19105   .   4543
10001   19112   .   2822

任何人都可以帮我解决这个错误。日期信息存在一些问题,因为当我把这个信息作为角色时,一切都很顺利。

2 个答案:

答案 0 :(得分:3)

你在这里混合了两种输入变种。唯一的区别是单个冒号:

data work.Dummy2; 
infile datalines dsd dlm=','; 
input Item date :DATE7. WKLY_QTY WKLY_SALES; 
datalines;
10001,01Apr12,3313,67536.16
10001,15Apr12,889,26577.66
10001,22Apr12,4543,65001.8
10001,29Apr12,2822,74522.02
;;;;
run;

列表输入通常不允许列表中的信息(您可以将信息放在信息语句中)。但是,允许修改列表输入(如上所示)。

答案 1 :(得分:1)

我建议您养成使用ATTRIB语句定义数据集显式中使用的所有变量的习惯。它需要更多的输入,但你最终得到的代码更容易使用,特别是如果你需要得到其他人的帮助。更好的是,包含一个KEEP语句来仅控制所需的变量,从而防止出现杂散变量。

这样做的另一个好处是允许您在适当的时候使用LIST输入。

换句话说,试试这个:

data LOtpt.Dummy2; 

  /* Define all variables and attributes here */
  attrib Item       informat=5.      format=5.;
  attrib Date       informat=date7.  format=yymmdd10.;
  attrib Wkly_Qty   informat=best10. format=comma9.;
  attrib Wkly_Sales informat=best10. format=dollar11.2;
  keep Item Date Wkly_Qty Wkly_Sales; 

  infile "&InptPath.\Dummy2_CSV.csv" dsd dlm=',' firstobs=2; 

  input Item Date Wkly_Qty Wkly_Sales; 
run;

如果你养成了一直这样做的习惯,随着时间的推移会变得容易多了。注意我根据我认为您的数据的样子选择了格式和信息。您应该选择最符合您需求的那些。