从文件名设置变量以读取目录中的所有文件

时间:2015-08-06 00:36:01

标签: regex sas filenames

我想在SAS中设置一个带文件名的新变量。我在一个文件夹中有一堆txt文件,我有一个宏来读取我的所有文本文件,我想创建另一个变量来读取所有文件名。

我想做的事情与之前提出的问题非常相似

SAS set a variable from a filename

这里提供的解决方案对我有用,除了它只读取我的一个文件。我怎样才能在宏中使用它,甚至可以用它来输入我的所有文件名。

reg1=prxparse("/\\(\w+\.csv)/");
if prxmatch(reg1, filename) then filename=prxposn(reg1,1,filename);

我想要的是输入我的所有文本文件名以及文本文件具有的其他变量。 例如:

filename var1 var2 var3
text1    xxx  xxx  xxx
text2    yyy  yyy  yyy

我也尝试过链接中提供的第二个解决方案。我正在使用SAS EG,它不允许我使用管道符号。对不起,如果我的问题太基础了。我是使用perl表达式的新手。

1 个答案:

答案 0 :(得分:1)

只有一行,很难解释为什么该代码对你不起作用。

这是我的解决方案 - 没有正则表达式或宏。

data import_all;

*make sure variables to store file name are long enough;
length filename txt_file_name $256;

*keep file name from record to record;
retain txt_file_name;

*Use wildcard in input;
infile "Path\*.txt" eov=eov filename=filename truncover;

*Input first record and hold line;
input@;

*Check if this is the first record or the first record in a new file;
*If it is, replace the filename with the new file name and move to next line;
if _n_ eq 1 or eov then do;
txt_file_name = scan(filename, -1, "\");
eov=0;
end;

*Otherwise  go to the import step and read the files;
else input

 *Place input code here;

;
run;