sas 宏:参数是文件名中的一个词
sas macro: argument to be a word in filename
我在特定文件夹中有类似的文件。我需要为每个文件 运行 相同的程序。所以我想到了使用宏。但是我遇到了一个问题。
%macro xyz(cityname); *IMPORTING FILE;
proc import datafile='G:\Interns\Shiyas\'&cityname'.csv'
out=out.datafile
dbms=csv replace ;
guessingrows=200;
/* PROGRAM */
PROC EXPORT DATA =out.hsi_area OUTFILE = 'G:\Interns\Shiyas\SAS\Output csv files\'&cityname'\Area.csv';
PROC EXPORT DATA =out.hsi_age OUTFILE = 'G:\Interns\Shiyas\SAS\Output csv files\'&cityname'\Age.csv';
%mend;
%xyz(bangalore);
%xyz(chennai);
%xyz(delhi);
%xyz(kochi);
我知道这不是将宏调用到文件名中的正确格式。但是,如果我可以调用文件名的参数,那将非常有帮助。我们该怎么做?
无法在单引号之间解析宏。
您应该将其重写为
"G:\Interns\Shiyas\&cityname..csv"
需要双句号,因为第一个句号用于宏解析。
看看这个link
我在特定文件夹中有类似的文件。我需要为每个文件 运行 相同的程序。所以我想到了使用宏。但是我遇到了一个问题。
%macro xyz(cityname); *IMPORTING FILE;
proc import datafile='G:\Interns\Shiyas\'&cityname'.csv'
out=out.datafile
dbms=csv replace ;
guessingrows=200;
/* PROGRAM */
PROC EXPORT DATA =out.hsi_area OUTFILE = 'G:\Interns\Shiyas\SAS\Output csv files\'&cityname'\Area.csv';
PROC EXPORT DATA =out.hsi_age OUTFILE = 'G:\Interns\Shiyas\SAS\Output csv files\'&cityname'\Age.csv';
%mend;
%xyz(bangalore);
%xyz(chennai);
%xyz(delhi);
%xyz(kochi);
我知道这不是将宏调用到文件名中的正确格式。但是,如果我可以调用文件名的参数,那将非常有帮助。我们该怎么做?
无法在单引号之间解析宏。
您应该将其重写为
"G:\Interns\Shiyas\&cityname..csv"
需要双句号,因为第一个句号用于宏解析。
看看这个link