sas中的多参数宏

问题描述 投票:0回答:1

其实我是想为下面这段代码创建一个宏,所以在proc sql中,我不需要分别创建两个不同的代码,因为它是从proc导入的,并在proc sql中创建两个数据集。

任何帮助将是非常感激:)

%macro import(market);

FILENAME REFFILE "PLANNING\BASE_PORTFOLIO\BS_PORT/Test/&market..csv";

PROC IMPORT DATAFILE=REFFILE DBMS=CSV OUT=&market. 
(KEEP= a b c)

REPLACE; 
/*GETNAMES=YES;*/
RUN;

%mend import;

%import (InputFile1);
%import (InputFile2);


PROC SQL;
   CREATE TABLE Outfile1 AS 
   SELECT a,b,c         
      FROM &market. t1 /*INPUT FILE READ VM*/
     GROUP BY a,b,c,
QUIT;


PROC SQL;
   CREATE TABLE Outfile2 AS 
   SELECT a,b,c         
      FROM &market. t1 /*INPUT FILE READ VM*/
     GROUP BY a,b,c,
QUIT;
sql sas sas-macro proc
1个回答
2
投票

market 是一个本地宏变量,只存在于宏本身。添加一个 out 宏的参数,并将你的 sql 语句放在宏中。

%macro import(market, out);

    FILENAME REFFILE "PLANNING\BASE_PORTFOLIO\BS_PORT/Test/&market..csv";

    PROC IMPORT DATAFILE=REFFILE DBMS=CSV OUT=&market. (KEEP= a b c)
        REPLACE; 
        GETNAMES=YES;
    RUN;

    PROC SQL; CREATE TABLE &out. AS 
        SELECT a,b,c
        FROM &market. t1 
        ;
    quit;

%mend import;

%import (InputFile1, Outfile1); 
%import (InputFile2, Outfile2);
© www.soinside.com 2019 - 2024. All rights reserved.