将具有模式匹配的文件读入一个 SAS 数据集
Read in Files with pattern match into one SAS dataset
我想使用模式匹配将多个 .csv 文件读取到单个 SAS 数据集中。例如,如果目录 /home/datasets
中有 5 个文件:
/home/datasets
~/output_group1a.csv
~/output_group1b.csv
~/output_group1c.csv
~/output_group2a.csv
~/output_group2b.csv
全部具有已知且相同的结构和数据类型。我只想读入与组 1 对应的那些文件,而不必明确指定文件名。
您可以在 infile 语句中使用通配符。如果每个文件中都有 headers,则需要考虑到这一点。这里有更多的例子。
https://gist.github.com/statgeek/4c27ea9a7ed6d3528835
data try01;
length filename txt_file_name 6;
retain txt_file_name;
infile "Path\*.txt" eov=eov filename=filename truncover;
input@;
if _n_ eq 1 or eov then do;
txt_file_name = scan(filename, -2, ".\");
eov=0;
end;
else input
*Place input code here;
;
run;
我想使用模式匹配将多个 .csv 文件读取到单个 SAS 数据集中。例如,如果目录 /home/datasets
中有 5 个文件:
/home/datasets
~/output_group1a.csv
~/output_group1b.csv
~/output_group1c.csv
~/output_group2a.csv
~/output_group2b.csv
全部具有已知且相同的结构和数据类型。我只想读入与组 1 对应的那些文件,而不必明确指定文件名。
您可以在 infile 语句中使用通配符。如果每个文件中都有 headers,则需要考虑到这一点。这里有更多的例子。
https://gist.github.com/statgeek/4c27ea9a7ed6d3528835
data try01;
length filename txt_file_name 6;
retain txt_file_name;
infile "Path\*.txt" eov=eov filename=filename truncover;
input@;
if _n_ eq 1 or eov then do;
txt_file_name = scan(filename, -2, ".\");
eov=0;
end;
else input
*Place input code here;
;
run;