%MACRO将CSV文件导入SAS

时间:2018-06-06 19:03:15

标签: csv import macros sas format

我需要将数百个csv文件作为.sas7bdat文件导入SAS。我不想手动操作,因为它很耗时。我尝试使用数据步骤在SAS中编写%宏,但不知道如何为每个变量指定正确的格式和长度。我担心如果我错误地指定其中一个变量的长度,然后一些数据不能正确读取。

以下是一个例子:

_1:

A,B,C,D,E
2, Paul Twix, 5/9/2015, 2, 238
2, Paul Twix, 5/10/2015, 3, 238
2, Paul Twix, 5/11/2015, 4, 238

数据_2:

A,B,C,D,E
2345678, Carolina Ferrera, 5/9/2015, 22, 123
2345678, Carolina Ferrera, 5/10/2015, 23, 123
2345678, Carolina Ferrera, 5/11/2015, 24, 123

我想先运行此代码以确定最大长度,但我只能检查少量文件。

proc sql noprint ;
 create table varlist as
 select memname,varnum,name,type,length,format,format as informat,label
 from dictionary.columns
 where libname='WORK' and memname='Data_1'
;
quit;

当我有少量文件时,我可以手动调整字符变量的长度,但是如果我有很多文件并且我根据第一个文件指定变量的格式,则会修剪一些变量。这是一个例子:

%macro import_main(inf,outdat);
DATA &outdat.;

INFILE &inf.
    LRECL=32767 firstobs=2
    TERMSTR=CRLF
    DLM=','
    MISSOVER
    DSD ;

INPUT
    A                : ?? BEST1.
    B                : $CHAR9.
    C                : ?? MMDDYY9.
    D                : ?? BEST1.
    E                : ?? BEST3. ;

FORMAT C YYMMDD10.;

RUN;
%mend import_main;
filename inf1 'C:\SAS_data_1.csv';
filename inf2 'C:\SAS_data_2.csv';


%import_main(inf1, work.SAS_data_1);
%import_main(inf2, work.SAS_data_2);

此代码正确显示SAS_data_1的值,但在SAS_data_2中错误地显示字符串的名称。

在%macro中有什么可以避免这个错误吗?

谢谢。

0 个答案:

没有答案