我想在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表达式的新手。
答案 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;