该代码获取两个宏并将它们分配给数据步骤中的数组,然后遍历ln_vars中定义的每个变量,创建一个新变量,该变量是变量的自然对数,追加_ln的名字SAS将宏函数的结果分配给数据步骤中的数组
%let ln_vars = var1 var2;
%let ln_names = %add_string(&ln_vars, _ln);
data transform;
set analysis;
array ln &ln_vars;
array ln_n &ln_names;
*call execute ('%add_string(%str(&ln_vars), _ln)');
do over ln;
ln_n = log(ln);
end;
run;
也许有一个更好的习惯用语在sas代码(我希望)。 我希望能够传递一个宏(ln_vars宏)并从数据步骤中调用%add_string()函数。 注释的“调用execute”返回正确的字符串,但是当我尝试
1588 array ln_n call execute ('%add_string(%str(&ln_vars), _ln)');
ERROR: Attempt to initialize variable call in numeric array ln_n with character constant
'%add_string(%str(&ln_vars), _ln)'.
在尝试自动化,写在分析中成功执行一个观察的代码。发布该代码(和示例数据),它会更容易帮助。上面的代码可以使用 – 2012-02-09 18:47:51
。我想用它的下面注释掉的一些版本的call execute命令替换数据步骤中的&ln_names。 – 2012-02-09 21:12:46