循环遍历字符串并读入文件并保存

时间:2015-05-29 23:29:37

标签: string loops import sas

我是SAS的新手。我有一堆csv格式的文件,我想读入SAS。我需要逐个阅读它们,并将它们单独或最好保存在一个巨大的文件中。 (虽然文件可能非常大......不知道如何最好地解决这个问题 - 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 s。

1 个答案:

答案 0 :(得分:2)

由于您希望循环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;