我正在尝试使用自定义代码将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
任何人都可以帮我解决这个错误。日期信息存在一些问题,因为当我把这个信息作为角色时,一切都很顺利。
答案 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;
如果你养成了一直这样做的习惯,随着时间的推移会变得容易多了。注意我根据我认为您的数据的样子选择了格式和信息。您应该选择最符合您需求的那些。