遍历字符串和读取文件,并保存[复制](Loop over strings and read in f

2019-10-23 06:22发布

这个问题已经在这里有一个答案:

  • 附加多个CSV文件中SAS 5个回答

我非常新的SAS。 我有一堆,我想读入SAS文件是CSV格式的。 我需要在一个接一个读他们救出来,单独或最好在一个巨大的文件。 (尽管文件可能是真正的大...不知道如何以最佳方式处理这 - ?MySQL的可能)

假设该文件被命名为这样的:

file97.csv
file98.csv
file99.csv
file00.csv
file01.csv
file02.csv

哪能环比97, 98, 99, 00, 01, 02在循环语句?

如果我只导入,说file97.csv ,代码是这样的:

PROC IMPORT OUT= WORK.data97 
            DATAFILE= "\...\file97.csv" 
            DBMS=CSV REPLACE;
     GETNAMES=YES;
     DATAROW=2; 
RUN;

我会写循环的代码是什么? 我基本上只需要改变97秒。

Answer 1:

既然你要循环Proc import ,你将不得不Macros为,也因为你Numbers 97, 98, 99, 00, 01, 02是不连续的,你将不得不使用一种变通方法。

%let files=97,98,99,00,01,02;
%macro loop_over;
%do i=1 %to %sysfunc(countw("&files."));
PROC IMPORT OUT= WORK.data%sysfunc(scan("&files.",&i.,",")) 
            DATAFILE= "\...\file%sysfunc(scan("&files.",&i.,",")).csv" 
            DBMS=CSV REPLACE;
     GETNAMES=YES;
     DATAROW=2; 
RUN;
%end;
%mend;
%loop_over;


文章来源: Loop over strings and read in files and save [duplicate]