我正在从一个变量“名称”创建 19 个不同的宏变量,最后一个宏变量在 if 条件(要求)中解析

问题描述 投票:0回答:1
options mprint mlogic symbolgen ;

%macro origin ;
data check ;
 set sashelp.class ;
  call symputx("local"||strip(put(_n_,best.)), name) ;
  run ; 
  
  %let cnt = &sysnobs. ;
  
  data check_one (keep = name macro_resolve );
   set check ;
   %do i= 1 %to &cnt. ;
    if age = 16 then do ;
     macro_resolve = symget("local&i.");
    end; 
   %end ;
   %symdel local&i. ;
run;

%mend origin ;

%origin ;

宏中的第一步创建 19 个宏变量(“NAME”变量中的 19 个观察值) 在第二步中,我想使用由该观察创建的特定宏变量来满足条件。

sas macros
1个回答
0
投票

第二个数据步骤中的

%do
循环不相关,因为它与数据步骤循环重叠。这样做的一个可能的问题是对变量位置的依赖。使用主键来索引变量更有用。

这对我有用:

options mprint mlogic symbolgen;

%macro origin ;
data check ;
 set sashelp.class ;
  call symputx("local"||strip(put(_n_,best.)), name) ;
  run ; 
  
  %let cnt = &sysnobs. ;

  
  data check_one (keep = name age macro_resolve );
   set check ;

    if age = 16 then do;
     macro_resolve = symget(catt("local", put(_n_, 8. -l)));
    end; 


run;


%mend origin ;
%origin ;
© www.soinside.com 2019 - 2024. All rights reserved.