2

我正在尝试使用自定义代码将 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

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

4

2 回答 2

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;

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

于 2013-08-11T11:01:33.117 回答
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;

如果你养成了一直做这样的事情的习惯,随着时间的推移,它会变得容易得多。请注意,我根据我认为您的数据的样子选择了格式和信息。您应该选择最能满足您需求的产品。

于 2013-08-11T21:43:37.490 回答