您目前使用什么将 CSV 导入 SAS?您最好的选择是使用文件->导入数据向导。执行此操作时,它将在日志窗口中生成一些 SAS 代码,如下所示:
data WORK.xx ;
%let _EFIERR_ = 0; /* set the ERROR detection macro variable */
infile 'D:\sasdev\xxx\output\xxx.csv' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;
informat datetimestamp anydtdtm40. ;
informat phoneHome best32. ;
informat phoneCell best32. ;
informat phoneBusiness best32. ;
format datetimestamp datetime. ;
format phoneHome best12. ;
format phoneCell best12. ;
format phoneBusiness best12. ;
input
datetimestamp
phoneHome
phoneCell
phoneBusiness
;
if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
run;
如果导入向导没有为您提供所需的结果,您可以复制它生成的代码并根据需要进行修改。在我上面的示例中,所有电话号码都被导入为数字。下面我稍微清理了一下代码,把phoneBusiness变量改成了长度为10的字符变量。
data WORK.xx ;
infile 'D:\sasdev\xxx\output\xxx.csv' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;
informat datetimestamp anydtdtm40. ;
informat phoneHome best32. ;
informat phoneCell best32. ;
informat phoneBusiness $10. ;
format datetimestamp datetime. ;
format phoneHome best12. ;
format phoneCell best12. ;
format phoneBusiness $10. ;
input datetimestamp
phoneHome
phoneCell
phoneBusiness $
;
run;
编辑/更新:
关于“数据类型”的一些注释。
SAS 中实际上只有两种类型的数据。字符和数字。日期存储为数字数据,但通常格式化为以人类可读的表示形式出现。以下types
评论中提到的称为格式/信息。
格式控制数据如何“显示”或“输出”。Informats 控制在用作输入时如何解析数据(例如从文件中读取)。您选择的信息应该代表数据的存储方式。您选择的格式实际上取决于您希望它如何显示。
您可以在此处找到文档:
http://support.sas.com/documentation/cdl/en/leforinforref/63324/HTML/default/viewer.htm#titlepage.htm
上述代码的快速总结 -best12.
是一种数字格式,最多可使用 12 个字符的宽度。将best32.
使用最多 32 个字符的宽度。这$10.
是一种字符格式(由 $ 符号标识),宽度为 10 个字符。