在Macro SAS中创建数据集

时间:2015-06-29 18:23:10

标签: sas sas-macro

我有以下代码:

%macro MSA (Data=, Code=, MSAName=);
    data &Data;
    set NoDup;
        %if MSA = &Code %then %do; 
        MSA_name = "&MSAName";
        output &data;
   %end; 
   run; 
   %mend MSA;
   %MSA (Data=Bakersfield, Code=12540, MSAName=Bakersfield);
   %MSA (Data=Chico,       Code=17020, MSAName=Chico);

所以我得到两个数据集,我想要一个名字贝克斯菲尔德和另一个奇科。但是,MSA列不显示正确的值(即Bakersfield的列为12540,MSA的Chico为17020),也没有得到一个名为MSA_Name的变量,它给出了正确的值(所有MSA_Name列的Bakersfield,和奇科)。我究竟做错了什么?

1 个答案:

答案 0 :(得分:2)

您的代码所遇到的问题是将宏语法与数据步骤混合在一起。请尝试以下方法:

%macro MSA (Data=, Code=, MSAName=);
    data &Data;
    set NoDup;
        if MSA = &Code /*if MSA is char, you will need quote "&code"*/ then  do;
        MSA_name = "&MSAName"; output; end;
      run; 
   %mend MSA;
   %MSA (Data=Bakersfield, Code=12540, MSAName=Bakersfield);
   %MSA (Data=Chico,       Code=17020, MSAName=Chico);